看了《actionscript3.0高階動畫教程》一書,用類對映的方式做了乙個小東西,方便學習,經過幾天發現了一些as3**動畫的小技巧,下面我們一起分享一下。
所有的運動都借助幀事件或定時器來做,可以只使用乙個幀事件或乙個定時器來完成所有運動的監聽和運算,節省開銷。
運動是變化,它的普遍做法是:第一初始化運動條件,二根據運動的公式或模型運算,三更新物體的座標或其他屬性。核心的操作都在第二步裡面。書中貫穿了很多物理概念,和基礎的運動聯絡緊密的就數向量這個概念了。
向量這裡不做詳細介紹,簡單的說就是方向加大小。向量在這裡面充當的就是變化量的這個部分,對變化量做相應的操作就能得到我們想要的**了,剩下的就是第三步,把處理好的變化量更新到操作物件的屬性上,達到運動的最終效果。
接下來看看一些基礎的運動:勻速、變速、摩擦力、緩動、彈性。這裡引入vx、vy,它就是運動裡面要用到的變化量。
勻速、變速可以歸為一類運動,他們都可以通過簡單的加減操作,使vx、vy變化,然後更新x、y座標上:
vx += 5;
vy += 5;
x += vx;
y += vy;
勻速運動就是 vx+=0 (y座標類似)的運動。也可以認為5就是加速度a。
摩擦力運動,是引入乙個降低vx、vy值的量,即物理的摩擦係數:
vx *= f;
vy *= f;
x += vx;
y += vy;
f是小於1的值,負責不斷減小變化量的值,這樣當變化量更新到座標值上的時候,會越來越小,最終停下。
緩動、彈性可以歸為另一類運動,他們的運算都伴隨著成比例的變化因素。
dx = targetx - object.x;
vx = dx * easing;
x += vx;
摩擦力直接修改變化量,緩動則是先成比例的修改距離值,再把距離作為變化量更新到座標上,這樣就得到了乙個每次都變化總距離的幾分之幾的緩動效果。
dx = targetx - object.x;
ax = dx * spring;
vx += ax;
x += vx;
相比緩動,彈性運動又多了一步操作,把處理後的距離,這個值是修改變化量的,修改後的變化量不斷的更新給x座標,只要ax不為零,這種更新會一直執行,直到ax最終把vx抵消讓物體停下來,處在這個過程裡物體就在目的點附近來回波動了,形成最終的彈性效果。
as3採用效果演算法
一 速度與加速度 速度即目標向某個方向移動的快慢,在座標系裡面有x軸和 y軸速度。用vx和 vy表示。設某個物體為 ball 則ball 移動的速度為 ball.x vx ball.y vy 加速度即改變速度值的描述,一般用ax ay表示。帶上加速度的 ball 的運動表示如下 vx ax vy a...
關於as3效率的優化
1.a b 要比 a a b 快,同樣,自增a 也比a a 1快,不過自減a 不是比a a 1快。2.在做除以2操作時,乘法比除法快,位運算更快.但是不要位運算來操作number型別的變數,因為它會將number型別的數值轉為整數型別。for int a b 1 faster than a b 5 ...
關於AS3中的深度複製
關於as3中的深度複製 url 參見 url 只能複製object屬性,或者類屬性,不能複製類方法。例如 color 0000ff class color a var a a new a 這時候轉殖乙個a例項 color 0000ff trace color cn.snowkit.utils.cob...