目錄 其他材料 |
實例應用 在第一部分的最后,我們將使用前面介紹的表達式基礎(chǔ)部分的知識來完成一個簡單的小例子。我們將重新使用輪胎的例子,使用移動屬性來控制圖層的旋轉(zhuǎn)屬性。 首先,讓我們整理一下制作思路,我們要給圖層的旋轉(zhuǎn)屬性加上表達式,并在表達式的最后以一個標量結(jié)束,所以首先要給旋轉(zhuǎn)參數(shù)加上一個表達式。 接下來,我們需要給圖層的位置屬性設置關(guān)鍵幀,以為位置屬性的變化將會驅(qū)動旋轉(zhuǎn)屬性的變化,在我們的例子中,我們僅僅需要輪胎在X 軸上移動,所以我們只需要: position[0] 真實的物理世界告訴我們當輪胎移動一個周長的距離時,它將完成一個周期(360)的旋轉(zhuǎn),在開始時我們會為設置計算公式而犯愁,還需要知道,輪胎的尺寸會影響到在一個旋轉(zhuǎn)周期內(nèi)其移動的距離,所以我們需要了解輪胎的尺寸,圖層的寬度。 假如輪胎的尺寸與圖層的尺寸相差無幾(在輪胎的周圍沒有空白的區(qū)域),我們可以使用圖層寬度來描述輪胎的直徑: width; 但是我們不能直接使用圖層寬度,我們需要使用圖層寬度來計算出輪胎的周長,利用基本的幾何學公式我們就可以計算出輪胎的周長,Javascript為我們提供了一個精確的PI值,所以我們就可以這樣來計算輪胎的周長: circumference=width*Math.PI; 如果輪胎的寬度是100個像素,他的周長將會是314個像素,但是如果我們改變圖層縮放屬性呢,再使用圖層的寬度來計算輪胎的周長所得到的結(jié)果就不會準確,為了得到更準確的計算結(jié)果,我們要利用圖層X軸向的縮放屬性來控制輪胎的周長: circumference=width*( scale[0]/100)*Math.PI; 我們將圖層的X軸縮放屬性(scale[0])除以100是因為縮放屬性的返回值是百分比, 接下來我們就需要定義圖層在X軸向移動的變量,在我們的例子中我們要使圖層從X軸的零點開始移動,所以我們使用下面的表達式: distance=position[0]; 最后我們寫出核心表達式: (distance/circumference)*360; 該表達式的含義前面已經(jīng)介紹過,這里就不詳細說明了,綜合起來,我們需要給旋轉(zhuǎn)屬性賦予這樣的表達式: circumference=width*( scale[0]/100)*Math.PI; distance=position[0]; (distance/circumference)*360 這時再觀看動畫,會看到輪胎的移動與旋轉(zhuǎn)已經(jīng)非常的自然了,絲毫沒有滑動的痕跡,還是那句話我們可以使用手動設置關(guān)鍵幀來實現(xiàn)同樣的效果,但是如果圖層作加速減速運動時,表達式的優(yōu)勢更是體現(xiàn)的淋漓盡致。 可以將這種方法應用到單獨的文字動畫中,也可以應用到非正常運動的物體中,得到真實的效果。 |
所有內(nèi)容版權(quán)歸JJ Gifford.所有,翻譯權(quán)歸CG頻道所有,違者必糾。