第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
3.2 lineTo(x, y)

lineTo 方法主要作用是打線到指定點(diǎn),它不會創(chuàng)建線條。通過字面意思我們也可以知道,“l(fā)ine: 路線”,“to: 到… 地方”,整體意思就是路線引到某個坐標(biāo)。參數(shù)說明:變量名類型是否必須說明 xNumber 是 canvas 畫布上相對于原點(diǎn)所繪制的矩形的左上角的 X 坐標(biāo)。yNumber 是 canvas 畫布上相對于原點(diǎn)所繪制的矩形的左上角的 Y 坐標(biāo)。

3.1 moveTo(x, y)

moveTo 方法主要作用是把畫筆路徑移動到畫布中的指定點(diǎn),它不會創(chuàng)建線條。通過字面意思我們也可以知道,“move: 移動”,“to: 到… 地方”,整體意思就是移動到某個坐標(biāo)。參數(shù)說明:變量名類型是否必須說明 xNumber 是 canvas 畫布上相對于原點(diǎn)所繪制的矩形的左上角的 X 坐標(biāo)。yNumber 是 canvas 畫布上相對于原點(diǎn)所繪制的矩形的左上角的 Y 坐標(biāo)。

1.1 使用 yum install -y git 命令安裝

如果你的版本是 Red Hat,也就是我們所說的紅帽,那么可以使用如下命令安裝:yum install -y git安裝完畢,需要配置 Git 全局標(biāo)識:git config --global user.name "Your Name"git config --global user.email "Your Email"將 “Your Name” 和 “Your Email” 替換為你的用戶名和郵箱即可。附:安裝步驟視頻??梢钥吹?,我的版本是 Red Hat 4.8.5-39。我將安裝操作錄了視頻,如下:151

4.1 closePath(x, y)

closePath() 方法主要作用是創(chuàng)建從筆觸當(dāng)前點(diǎn)到 moveTo 的點(diǎn)的路徑,它的優(yōu)勢在于會自動處理接口閉合的問題。同學(xué)們可以用前面學(xué)過的知識繪制一個三角形,深刻體會一下 closePath() 的不同之處。

3.1 beginPath(x, y)

beginPath() 方法主要作用是開始一個新的路徑,它是下次 stroke 的起始位置,下次 stroke 的時候就不會重新繪制 beginPath 之前的內(nèi)容了。

1. 案例演示

Tips:示例程序在 GCC 7.5.0 下測試通過,請大家使用支持 C99 標(biāo)準(zhǔn)的編譯器。# include <stdio.h># include <stdbool.h>int main(){ bool x,y,z; x=false; y=true; printf("x = %d; y = %d\n",x,y); z=x||y; printf("x || y = %d\n",z); z=x&&y; printf("x && y = %d\n",z); printf("!x = %d\n",!x); printf("!y = %d\n",!y); return 0;}運(yùn)行結(jié)果x = 0; y = 1x || y = 1x && y = 0!x = 1!y = 0從實(shí)際的程序可以看到,和我們上一節(jié)中介紹的表格中的運(yùn)算結(jié)果是一致的。如果不使用布爾類型,直接使用整數(shù)會怎樣?下面我就通過實(shí)際的程序來看一下結(jié)果。# include <stdio.h>int main(){ int x,y,z; x=0; y=10; printf("x = %d; y = %d\n",x,y); z=x||y; printf("x || y = %d\n",z); z=x&&y; printf("x && y = %d\n",z); printf("!x = %d\n",!x); printf("!y = %d\n",!y); return 0;}運(yùn)行結(jié)果x = 0; y = 10x || y = 1x && y = 0!x = 1!y = 0雖然由布爾類型變?yōu)榱苏麛?shù)類型,但是最后的結(jié)果是一致的。這也就是 C 語言在出現(xiàn)布爾類型之前經(jīng)常用到的形式。

3. 實(shí)例

#include <stdio.h>int main(){ int x, y; x = 0; y = 10; printf("%s\n", (x > y) ? "x > y" : "x < y"); return 0;}運(yùn)行結(jié)果:x < y這個語句還可以配合賦值語句使用,給變量賦值。#include <stdio.h>int main(){ int x, y, z; x = 0; y = 10; z = (x > y) ? 20 : 50; printf("%d\n", z); return 0;}運(yùn)行結(jié)果:50我們在講述 C 語言邏輯運(yùn)算的時候知道了,在 C 語言中,即使引入了布爾類型,但是在使用 printf 函數(shù)輸出的時候,也是沒有辦法來直接輸出布爾類型的,只能是通過輸出整除類型來替代。如果我們想直接輸出布爾類型,可以通過編寫一個小的程序來擴(kuò)展輸出,將 0 和 1 直接替換為 false 和 true 輸出。但是這樣做如果輸出次數(shù)很多是值得寫這樣一個程序的,要是只是像我們測試或者只是單次輸出,那么就顯得有些復(fù)雜了。這時候,我們這次介紹的三目運(yùn)算符就有用武之地了。#include <stdio.h>#include <stdbool.h>int main(){ bool x, y, z; x = false; y = true; printf("x = %s; y = %s\n", x ? "true" : "false", y ? "true" : "false"); z = x || y; printf("x || y = %s\n", z ? "true" : "false"); z = x && y; printf("x && y = %s\n", z ? "true" : "false"); printf("!x = %s\n", !x ? "true" : "false"); printf("!y = %s\n", !y ? "true" : "false"); return 0;}運(yùn)行結(jié)果:x = false; y = truex || y = truex && y = false!x = true!y = false在上面的代碼中每個 printf 函數(shù)都使用了本節(jié)介紹的三目運(yùn)算符。其實(shí)就是在每個 printf 函數(shù)里都內(nèi)置了一個判斷語句。這個判斷語句會根據(jù)傳入的變量的值來進(jìn)行判斷,分別用 true 和 false 來替換 1 和 0 ,這樣就可以實(shí)現(xiàn)布爾值的輸出了。

2.2 運(yùn)算符

2.2.1 四則運(yùn)算符四則運(yùn)算符是理工運(yùn)算中的基礎(chǔ),主要包含加減乘除和絕對值運(yùn)算。實(shí)例 3:四則運(yùn)算符號匯總。加法符號:$x+y=z$ 減法符號:$x-y=z$ 加減符號:$x \pm y=z$ 減加符號:$x \mp y=z$ 叉乘符號:$x \times y=z$ 點(diǎn)乘符號:$x \cdot y=z$ 星乘符號:$x \ast y=z$ 除法符號:$x \div y=z$ 斜除符號:$x/y=z$ 分式1:$\frac{x+y}{y+z}$ 分式2:${x+y} \over {y+z}$ 絕對值:$|x+y|$ 其渲染效果如下:2.2.2 邏輯運(yùn)算符實(shí)例 4:邏輯運(yùn)算符號匯總。等于符號:$x+y=z$ 大于符號:$x+y>z$ 小于符號:$x+y<z$ 大于等于符號:$x+y \geq z$ 小于等于符號:$x+y \leq z$ 不等于符號:$x+y \neq z$ 不大于等于符號:$x+y \ngeq z$ 不大于等于符號:$x+y \not\geq z$ 不小于等于符號:$x+y \nleq z$ 不小于等于符號:$x+y \not\leq z$ 約等于符號:$x+y \approx z$ 恒定等于符號:$x+y \equiv z$ 其渲染效果如下:2.2.3 高等運(yùn)算符實(shí)例 5:高等運(yùn)算符號匯總。平均數(shù)符號:$\overline{xyz}$ 開二次方符號:$\sqrt x$ 開方符號:$\sqrt[3]{x+y}$ 對數(shù)符號:$\log(x)$ 極限符號:$\lim^{x \to \infty}_{y \to 0}{\frac{x}{y}}$ 極限符號:$\displaystyle \lim^{x \to \infty}_{y \to 0}{\frac{x}{y}}$ 求和符號:$\sum^{x \to \infty}_{y \to 0}{\frac{x}{y}}$ 求和符號:$\displaystyle \sum^{x \to \infty}_{y \to 0}{\frac{x}{y}}$ 積分符號:$\int^{\infty}_{0}{xdx}$ 積分符號:$\displaystyle \int^{\infty}_{0}{xdx}$ 微分符號:`\partial`,如:$\frac{\partial x}{\partial y}$ 矩陣符號:$\left[ \begin{matrix} &1 &2 &\cdots &4 &5 &6 &\cdots &8\\ &\vdots &\ddots &\cdots &13 &14 &15 &\cdots &16\end{matrix} \right]$其渲染效果如下:

1.3 for 循環(huán)嵌套

列表推導(dǎo)中允許 for 循環(huán)嵌套,它的語法定義如下:[expression for x in X for y in Y]可以認(rèn)為它使用如下代碼創(chuàng)建了一個 list:list = []for x in X: for y in Y: list.append(expression)使用列表推導(dǎo)生成一個包含兩個字符的字符串列表,代碼如下:>>> [x + y for x in 'ABC' for y in 'XYZ']['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']等價于使用 append 方法創(chuàng)建列表,代碼如下:>>> list = []>>> for x in 'ABC':... for y in 'XYZ':... list.append(x + y)...>>> list['AX', 'AY', 'AZ', 'BX', 'BY', 'BZ', 'CX', 'CY', 'CZ']在第 1 行,創(chuàng)建了一個空列表在第 2 行,在外循環(huán)中,遍歷字符串 ‘ABC’ 中的 3 個字符 ‘A’、‘B’ 和 ‘C’,循環(huán)變量 x 依次為’A’、‘B’ 和 ‘C’在第 3 行,在內(nèi)循環(huán)中,遍歷字符串 ‘XYZ’ 中的 3 個字符 ‘X’、‘Y’ 和 ‘Z’,循環(huán)變量 y 依次為’X’、‘Y’ 和 ‘Z’在第 4 行,將表達(dá)式 x + y 作為元素添加到列表中

2. 命名空間的本質(zhì)

命名空間本質(zhì)上就是一個對象,將其內(nèi)部的變量組織到這個對象的屬性上:namespace Calculate { const fn = (x: number, y: number) => x * y export const add = (x: number, y:number) => x + y}來看其編譯后的結(jié)果:"use strict";var Calculate;(function (Calculate) { var fn = function (x, y) { return x * y; }; Calculate.add = function (x, y) { return x + y; };})(Calculate || (Calculate = {}));那么,我們就可以訪問 Calculate 對象上的 add 屬性了:Calculate.add(2, 3)命名空間主要是為解決全局作用域內(nèi)重名問題,而這一問題隨著模塊化編程的使用,已經(jīng)得到了解決。

2. 函數(shù)類型

在 TypeScript 中編寫函數(shù),需要給形參和返回值指定類型:const add = function(x: number, y: number): string { return (x + y).toString()}代碼解釋:參數(shù) x 和 y 都是 number 類型,兩個參數(shù)相加后將其類型轉(zhuǎn)換為 string, 所以整個函數(shù)的返回值為 string 類型。上面的代碼只是對 = 等號右側(cè)的匿名函數(shù)進(jìn)行了類型定義,等號左側(cè)的 add 同樣可以添加類型:const add: (x: number, y: number) => string = function(x: number, y: number): string { return (x + y).toString()}可以看到,等號左側(cè)的類型定義由兩部分組成:參數(shù)類型和返回值類型,通過 => 符號來連接。這里要注意:函數(shù)類型的 => 和 箭頭函數(shù)的 => 是不同的含義。通過箭頭函數(shù)改寫一下剛才寫的函數(shù):const add = (x: number, y: number): string => (x + y).toString()等號左右兩側(cè)書寫完整:// 只要參數(shù)位置及類型不變,變量名稱可以自己定義,比如把兩個參數(shù)定位為 a bconst add: (a: number, b: number) => string = (x: number, y: number): string => (x + y).toString()

3. 語法

通用坐標(biāo)軸說明:x 代表橫軸,y 代表縱軸。坐標(biāo)軸效果圖包含參數(shù):值描述translate(x,y)可以改變元素的位置,而不會對相鄰元素由影響。translateX(x)只改變元素的水平位置。translateY(y)只改變元素在豎直方向的位置。scale(x,y)元素縮放,x 代表水平方向,y 代表豎直方向。scaleX(x)僅對元素 x 方向上縮放。scaleY(y)僅對元素 y 方向上縮放。skew(x-angle,y-angle)定義沿著 X 和 Y 軸的 2D 傾斜轉(zhuǎn)換。skewX(angle)定義沿著 X 軸的 2D 傾斜轉(zhuǎn)換。skewY(angle)定義沿著 Y 軸的 2D 傾斜轉(zhuǎn)換。rotate(angle)在平面上旋轉(zhuǎn)一個角度

2.3 將整數(shù)轉(zhuǎn)換為字符串

Python 提供函數(shù) str 用于將整數(shù)轉(zhuǎn)換為字符串,例如:>> a = 1>> b = 1>> x = str(a)>> y = str(b)>> x + y'11'在第 3 行,將整數(shù) a 轉(zhuǎn)換為字符串 x 在第 4 行,將整數(shù) b 轉(zhuǎn)換為字符串 y 在第 5 行,將字符串 x 和字符串 y 相加,得到結(jié)果 ‘11’

實(shí)例

#include <stdio.h>int main(){ int x, y, z; x = 0; y = 10; z = 30; if (x > y) { z = 20; } else { z = 100; } printf("%d\n", z); return 0;}運(yùn)行結(jié)果100這段程序表示,當(dāng) x > y 成立的時候,執(zhí)行語句 z = 20; ,當(dāng)條件不成立的時候,執(zhí)行語句 z = 100; 。顯然條件不成立,所以執(zhí)行了語句 z = 100; 。所以最終的結(jié)果輸出時 100 。

3. 語法

transform: none|transform-functions;3D 空間坐標(biāo)軸坐標(biāo)軸值說明值描述translate3d(x,y,z)定義 3D 轉(zhuǎn)換。translateX(x)定義轉(zhuǎn)換,只是用 X 軸的值。translateY(y)定義轉(zhuǎn)換,只是用 Y 軸的值。translateZ(z)定義 3D 轉(zhuǎn)換,只是用 Z 軸的值。scale3d(x,y,z)定義 3D 縮放轉(zhuǎn)換。scaleX(x)通過設(shè)置 X 軸的值來定義縮放轉(zhuǎn)換。scaleY(y)通過設(shè)置 Y 軸的值來定義縮放轉(zhuǎn)換。scaleZ(z)通過設(shè)置 Z 軸的值來定義 3D 縮放轉(zhuǎn)換。rotate3d(x,y,z,angle)定義 3D 旋轉(zhuǎn)。rotateX(angle)定義沿著 X 軸的 3D 旋轉(zhuǎn)。rotateY(angle)定義沿著 Y 軸的 3D 旋轉(zhuǎn)。rotateZ(angle)定義沿著 Z 軸的 3D 旋轉(zhuǎn)。transform-style在空間內(nèi)如何呈現(xiàn) flat 2D 呈現(xiàn), preserve-3d 3D 呈現(xiàn)我們在 transform2D 中已經(jīng)對平面屬性做了詳細(xì)的介紹,本章節(jié)主要是其 3D 屬性,這些屬性的使用需要在父級設(shè)置 perspective 和 transform-style讓父級有了透視效果以及設(shè)置父級在內(nèi)部空間的呈現(xiàn)方式。

2. TensorFlow 之中的梯度帶

既然我們能了解了什么是微分,那么在 TensorFlow 是如何進(jìn)行梯度的計(jì)算的呢?答案就是 “梯度帶”:tf.GradientTape()我們先來看一個簡單的例子:import tensorflow as tfx = tf.constant(5.0)with tf.GradientTape(persistent=True) as t: t.watch(x) y = x * x z = y * ydz_dx = t.gradient(z, x)dy_dx = t.gradient(y, x)在這個例子之中,我們定義了兩個操作: y = x * x z = y * y我們令 y 為 x 的平方,讓 z 為 y 的平方,然后我們來追蹤 x 的梯度。那么先讓我們將 z 也改寫為 x 的形式: y = x * x z = x * x * x * x分別對于 x 求導(dǎo),我們可以得到 y 和 z 的導(dǎo)數(shù): dy_dx = 2 * x dz_dx = 4 * x * x * x通過手動計(jì)算,我們可以將 x 的數(shù)值帶入其中,從而得到 y 與 z 關(guān)于 x 的梯度值:分別為 10 和 500 。在上面的代碼之中,我們可以輸出 dz_dx 和 dy_dx :print(dz_dx)print(dy_dx)我們得到結(jié)果:10.0500.0可以看到,程序已經(jīng)自動求得了梯度,并且與我們計(jì)算的完全一致。具體對于 tf.GradientTape () 這個 API 來說,它會在它自身的上下文之中,將所有執(zhí)行與發(fā)生的操作都記錄在一個 tape 上。 當(dāng)我們計(jì)算結(jié)束的時候,這個 tape 上面便記錄了一個完整的計(jì)算過程,那么它便從后向前,使用反向微分算法的方式來進(jìn)行梯度的計(jì)算,從而得到每個變量的梯度。

2.1 屬性值簡寫

在 ES5 中我們知道,在定義對象時屬性的值是必須要寫的,在 ES6 中規(guī)定,如果屬性名和定義的變量名是一樣的,就可以在對象中直接寫這個變量名作為對象中的一項(xiàng)。如下:var name = 'imooc';// ES5var obj1 = { name: name,}// ES6var obj2 = { name,}上面代碼中的 obj1 和 obj2 是一樣的意思。變量 name 可以直接寫在大括號中。這時,屬性名就是變量名,屬性值就是變量值。下面我們來看一個在函數(shù)中返回一個對象的實(shí)例:// ES5function getObj(x, y) { return {x: x, y: y};}// 等同于 ES6function getObj(x, y) { return {x, y};}getObj(1, 2) // {x: 1, y: 2}上面中的代碼可以看出,在我們平常開發(fā)中,組裝數(shù)據(jù)時是非常方便、有用的。

1. 定義條形雪碧圖動畫

/* 清除瀏覽器默認(rèn)邊距 */* { padding: 0; margin: 0; }body { /* 這段代碼是為了居中顯示,不是重點(diǎn),看不懂的話可以無視 */ height: 100vh; display: flex; align-items: center; justify-content: center; /* 添加背景圖 */ background: url(../img/bg.jpg) center / cover;}.animate { width: 130px; height: 130px; background: url(../img/rect.png); /* 動畫: 動畫名(loading) 時長(0.6秒) 運(yùn)行方式(step-end) 動畫次數(shù)(無限) */ animation: loading .6s step-end infinite;}/* 定義動畫:動畫名(loading) */@keyframes loading { from { background-position: 0 0 } /* 第一個數(shù)字代表x軸坐標(biāo),第二個數(shù)字代表y軸坐標(biāo) */ 10% { background-position: -130px 0 } /* x坐標(biāo):-130 y坐標(biāo):0 */ 20% { background-position: -260px 0 } /* x坐標(biāo):-260 y坐標(biāo):0 */ 30% { background-position: -390px 0 } /* x坐標(biāo):-390 y坐標(biāo):0 */ 40% { background-position: -520px 0 } /* x坐標(biāo):-520 y坐標(biāo):0 */ 50% { background-position: 0 -130px } /* x坐標(biāo):0 y坐標(biāo):-130 */ 60% { background-position: -130px -130px } /* x坐標(biāo):-130 y坐標(biāo):-130 */ 70% { background-position: -260px -130px } /* x坐標(biāo):-260 y坐標(biāo):-130 */ 80% { background-position: -390px -130px } /* x坐標(biāo):-390 y坐標(biāo):-130 */ 90% { background-position: -520px -130px } /* x坐標(biāo):-520 y坐標(biāo):-130 */ to { background-position: 0 } /* 最后一幀不顯示,可以隨便寫 */}/* 定義動畫:動畫名(animate) */@keyframes animate { from { background-position: 0 } to { background-position: -2600px }}咦?條形圖只需要定義兩行?一個from一個to???是的,這就是為什么推薦制作雪碧圖的時候做成一行的原因。你只需要定義一開始的時候圖像在原點(diǎn),然后最后的時候圖像有多寬,你就寫負(fù)多少:這個圖是2600像素,所以to里面的background-position就是 -2600px。數(shù)了一下這張雪碧圖里面一共有 12 個元素,所以 steps() 括號里面要寫12。div 盒子的寬高應(yīng)該正好和雪碧圖里面的一個元素的寬高相對應(yīng):用雪碧圖的 寬 2600 除以 12 等于 216.666… 無限循環(huán)。咱們?nèi)∫粋€近似值,就 216px 吧。所以寬高設(shè)置為 216 * 300,怎么設(shè)置呢?要讓加載動畫結(jié)束之后(也就是定義加載動畫的最后一幀)div 就變成這個寬高。/* 清除瀏覽器默認(rèn)邊距 */* { padding: 0; margin: 0; }body { /* 這段代碼是為了居中顯示,不是重點(diǎn),看不懂的話可以無視 */ height: 100vh; display: flex; align-items: center; justify-content: center; /* 添加背景圖 */ background: url(../img/bg.jpg) center / cover;}.animate { width: 130px; height: 130px; background: url(../img/rect.png); /* 動畫: 動畫名(loading) 時長(0.6秒) 運(yùn)行方式(step-end) 動畫次數(shù)(無限) */ animation: loading .6s step-end infinite;}/* 定義動畫:動畫名(loading) */@keyframes loading { from { background-position: 0 0 } /* 第一個數(shù)字代表x軸坐標(biāo),第二個數(shù)字代表y軸坐標(biāo) */ 10% { background-position: -130px 0 } /* x坐標(biāo):-130 y坐標(biāo):0 */ 20% { background-position: -260px 0 } /* x坐標(biāo):-260 y坐標(biāo):0 */ 30% { background-position: -390px 0 } /* x坐標(biāo):-390 y坐標(biāo):0 */ 40% { background-position: -520px 0 } /* x坐標(biāo):-520 y坐標(biāo):0 */ 50% { background-position: 0 -130px } /* x坐標(biāo):0 y坐標(biāo):-130 */ 60% { background-position: -130px -130px } /* x坐標(biāo):-130 y坐標(biāo):-130 */ 70% { background-position: -260px -130px } /* x坐標(biāo):-260 y坐標(biāo):-130 */ 80% { background-position: -390px -130px } /* x坐標(biāo):-390 y坐標(biāo):-130 */ 90% { background-position: -520px -130px } /* x坐標(biāo):-520 y坐標(biāo):-130 */ /* 修改最后一幀,以便動畫結(jié)束后盒子就應(yīng)用最后一幀的樣式 */ to { /* 下一個動畫的寬高 */ width: 216px; height: 300px; /* 下一個動畫的雪碧圖 */ background-image: url(../img/animate.png); }}/* 定義動畫:動畫名(animate) */@keyframes animate { from { background-position: 0 } to { background-position: -2600px }}

6. 泛型的類型兼容性

泛型的類型兼容性根據(jù)其是否被成員使用而不同。先看一段代碼示例:interface Empty<T> {}let x: Empty<number>let y: Empty<string>x = y! // OK上面代碼里,x 和 y 是兼容的,因?yàn)樗鼈兊慕Y(jié)構(gòu)使用類型參數(shù)時并沒有什么不同。但是當(dāng)泛型被成員使用時:interface NotEmpty<T> { data: T}let x: NotEmpty<number>let y: NotEmpty<string>x = y! // Error代碼解釋: 因?yàn)榈?4 行,泛型參數(shù)是 number 類型,第 5 行,泛型參數(shù)是 string 類型,所以最后一行賦值失敗。如果沒有指定泛型類型的泛型參數(shù),會把所有泛型參數(shù)當(dāng)成 any 類型比較:let identity = function<T>(x: T): void { // ...}let reverse = function<U>(y: U): void { // ...}identity = reverse // OK

3. 模擬鼠標(biāo)操作

最后一部分我們來看看和鼠標(biāo)操作相關(guān)的方法,總共有4個方法:splash:mouse_click():模擬鼠標(biāo)的點(diǎn)擊動作,該方法的原型為 splash:mouse_click(x, y);示例1:local button = splash:select('button')-- 對于選中的button元素執(zhí)行點(diǎn)擊動作button:mouse_click()示例2:-- 通過(x, y)坐標(biāo)執(zhí)行鼠標(biāo)點(diǎn)擊動作function main(splash) assert(splash:go(splash.args.url)) -- 定義js函數(shù) local get_dimensions = splash:jsfunc([[ function () { var rect = document.getElementById('button').getClientRects()[0]; return {"x": rect.left, "y": rect.top} } ]]) splash:set_viewport_full() splash:wait(0.1) -- 執(zhí)行js方法,獲取元素的坐標(biāo)位置 local dimensions = get_dimensions() -- FIXME: button must be inside a viewport splash:mouse_click(dimensions.x, dimensions.y) -- Wait split second to allow event to propagate. splash:wait(0.1) return splash:html()endsplash:mouse_hover():模擬鼠標(biāo)懸停事件,方法原型為 splash:mouse_hover(x, y);splash:mouse_press():在網(wǎng)頁中觸發(fā)鼠標(biāo)按下事件,方法原型為 splash:mouse_press(x, y);splash:mouse_release():在網(wǎng)頁中觸發(fā)鼠標(biāo)釋放事件。方法原型為 splash:mouse_release(x, y);

4.5 intersection() 方法

intersection() 方法返回兩個集合的交集,示例如下:>>> x = {1, 2, 3}>>> y = {2, 3, 4}>>> z = x.intersection(y)>>> z{2, 3}在第 3 行,使用 intersection() 方法返回集合 x 和集合 y 的交集在第 4 行,顯示兩個集合的交集

4.1 public

TypeScript 中,類的成員全部默認(rèn)為 public,當(dāng)然你也可以顯式的將一個成員標(biāo)記為 public,標(biāo)記為 public 后,在程序類的外部可以訪問。class Calculate { // 類的屬性 public x: number public y: number // 構(gòu)造函數(shù) public constructor(x: number, y: number) { this.x = x this.y = y } public add () { return this.x + this.y }}

4.7 issuperset() 方法

issuperset() 方法判斷指定集合是否為超集,示例如下:>>> x = {1, 2, 3}>>> y = {1, 2}>>> x.isuperset(y)True在第 3 行,使用 issuperset() 方法判斷集合 x 是否為集合 y 的超集在第 4 行,結(jié)果表明集合 {1, 2, 3} 是集合 {1, 2} 的超集

1. 調(diào)用動畫

定義好了就可以去調(diào)用了,來看一下怎么調(diào)用:/* 清除瀏覽器默認(rèn)邊距 */* { padding: 0; margin: 0; }body { /* 這段代碼是為了居中顯示,不是重點(diǎn),看不懂的話可以無視 */ height: 100vh; display: flex; align-items: center; justify-content: center; /* 添加背景圖 */ background: url(../img/bg.jpg) center / cover;}.animate { width: 130px; height: 130px; background: url(../img/rect.png); /* 動畫: 動畫名(loading) 時長(0.6秒) 運(yùn)行方式(step-end) 動畫次數(shù)(無限) */ animation: loading .6s step-end infinite;}/* 定義動畫:動畫名(loading) */@keyframes loading { from { background-position: 0 0 } /* 第一個數(shù)字代表x軸坐標(biāo),第二個數(shù)字代表y軸坐標(biāo) */ 10% { background-position: -130px 0 } /* x坐標(biāo):-130 y坐標(biāo):0 */ 20% { background-position: -260px 0 } /* x坐標(biāo):-260 y坐標(biāo):0 */ 30% { background-position: -390px 0 } /* x坐標(biāo):-390 y坐標(biāo):0 */ 40% { background-position: -520px 0 } /* x坐標(biāo):-520 y坐標(biāo):0 */ 50% { background-position: 0 -130px } /* x坐標(biāo):0 y坐標(biāo):-130 */ 60% { background-position: -130px -130px } /* x坐標(biāo):-130 y坐標(biāo):-130 */ 70% { background-position: -260px -130px } /* x坐標(biāo):-260 y坐標(biāo):-130 */ 80% { background-position: -390px -130px } /* x坐標(biāo):-390 y坐標(biāo):-130 */ 90% { background-position: -520px -130px } /* x坐標(biāo):-520 y坐標(biāo):-130 */ to { background-position: 0 } /* 最后一幀不顯示,可以隨便寫 */}為了能夠讓同學(xué)們在瀏覽器里直接看結(jié)果,我們這里寫了一個可運(yùn)行的案例:910運(yùn)行結(jié)果: ![图片描述](//img1.sycdn.imooc.com//wiki/5eda04590a708f6c01650135.jpg) 可以看到效果就已經(jīng)很完美的呈現(xiàn)出來了,那么接下來我們再來添加一下條形雪碧圖,看看條形雪碧圖的用法有何不同。

3.2 函數(shù)返回值

創(chuàng)建兩個僅是返回值類型不同的函數(shù):let x = () => ({name: 'Alice'})let y = () => ({name: 'Alice', location: 'Seattle'})x = y // OKy = x // Error代碼解釋: 最后一行,函數(shù) x() 缺少 location 屬性,所以報(bào)錯。類型系統(tǒng)強(qiáng)制源函數(shù)的返回值類型必須是目標(biāo)函數(shù)返回值類型的子類型。由此可以得出如果目標(biāo)函數(shù)的返回值類型是 void,那么源函數(shù)返回值可以是任意類型:let x : () => voidlet y = () => 'imooc'x = y // OK

2.3 有多個參數(shù)

BinaryOperator<Long> add = (x,y) -> x+y ;使用 () 把參數(shù)包裹起來,并用 , 來分割參數(shù)。上面的代碼表示。

3. 可分配條件類型

在條件類型 T extends U ? X : Y 中,當(dāng)泛型參數(shù) T 取值為 A | B | C 時,這個條件類型就等價于 (A extends U ? X : Y) | (B extends U ? X : Y) | (C extends U ? X : Y),這就是可分配條件類型??煞峙錀l件類型(distributive conditional type)中被檢查的類型必須是裸類型參數(shù)(naked type parameter)。裸類型表示沒有被包裹(Wrapped) 的類型,(如:Array<T>、[T]、Promise<T> 等都不是裸類型),簡而言之裸類型就是未經(jīng)過任何其他類型修飾或包裝的類型。

3.1 矩形

使用 rect 表示矩形,例如:1087包含6個屬性x 用于表示矩形左上角坐標(biāo) x 值;y 用于表示矩形左上角坐標(biāo) y 值;width 表示矩形寬度;height 表示矩形高度;rx 用于實(shí)現(xiàn)圓角效果的圓角 x 軸半徑;ry 用于實(shí)現(xiàn)圓角效果的圓角 y 軸半徑。

1. 定義動畫

想要運(yùn)行一個動畫,就要先去定義一個動畫 —— 魯迅。那么我們就先來看看矩形圖要怎么定義動畫:/* 清除瀏覽器默認(rèn)邊距 */* { padding: 0; margin: 0; }body { /* 這段代碼是為了居中顯示,不是重點(diǎn),看不懂的話可以無視 */ height: 100vh; display: flex; align-items: center; justify-content: center; /* 添加背景圖 */ background: url(../img/bg.jpg) center / cover;}.animate { background: url(../img/rect.png);}/* 定義動畫:動畫名(loading) */@keyframes loading { from { background-position: 0 0 } /* 第一個數(shù)字代表x軸坐標(biāo),第二個數(shù)字代表y軸坐標(biāo) */ 10% { background-position: -130px 0 } /* x坐標(biāo):-130 y坐標(biāo):0 */ 20% { background-position: -260px 0 } /* x坐標(biāo):-260 y坐標(biāo):0 */ 30% { background-position: -390px 0 } /* x坐標(biāo):-390 y坐標(biāo):0 */ 40% { background-position: -520px 0 } /* x坐標(biāo):-520 y坐標(biāo):0 */ 50% { background-position: 0 -130px } /* x坐標(biāo):0 y坐標(biāo):-130 */ 60% { background-position: -130px -130px } /* x坐標(biāo):-130 y坐標(biāo):-130 */ 70% { background-position: -260px -130px } /* x坐標(biāo):-260 y坐標(biāo):-130 */ 80% { background-position: -390px -130px } /* x坐標(biāo):-390 y坐標(biāo):-130 */ 90% { background-position: -520px -130px } /* x坐標(biāo):-520 y坐標(biāo):-130 */ to { background-position: 0 } /* 最后一幀不顯示,可以隨便寫 */}定義一個名為 loading 的動畫,雪碧圖上一共有 10 個元素,所以在這里我們定義 11 幀(最后一幀看不到)。每一幀都要對準(zhǔn)位置,整張雪碧圖的尺寸是 680px * 260px,2 行 5 列。所以高260除以行2等于 130px、寬 680除以列 5還是等于 130px,所以我們的 div 寬高要設(shè)置成 130 * 130,第一幀到第五幀都是寬(130px)的倍數(shù),第一幀是0 * 130px,第二幀是1 * 130px,依此類推。到了第五幀(40%)的時候,整個第一行已經(jīng)都過了一遍,所以第六幀(50%)我們要換到第二行的行首。于是 y 坐標(biāo)由之前的 0 變成了 -130px,剛好是一行的高度。有的同學(xué)可能會有一個疑問:為什么這些坐標(biāo)都是負(fù)值呢?我們還是用圖片去理解:小一點(diǎn)的方框代表我們的 div,大方塊代表雪碧圖,原點(diǎn)為左上角。如果是正值的話,就是雪碧圖左上角距離 div 左上角右移。如果值為負(fù)的話,就是左移。y 軸同理,正值下移,負(fù)值上移。

1. 慕課解釋

條件類型用來表達(dá)非均勻類型映射,可以根據(jù)一個條件表達(dá)式來進(jìn)行類型檢測,從兩個類型中選出其中一個:T extends U ? X : Y語義類似三目運(yùn)算符:若 T 是 U 的子類型,則類型為 X,否則類型為 Y。若無法確定 T 是否為 U 的子類型,則類型為 X | Y。

首頁上一頁1234567下一頁尾頁
直播
查看課程詳情
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號