一、
速度與加速度
速度即目標向某個方向移動的快慢,在座標系裡面有x軸和
y軸速度。用vx和
vy表示。設某個物體為
ball
,則ball
移動的速度為:
ball.x+=vx;
ball.y+=vy;
加速度即改變速度值的描述,一般用ax、
ay表示。帶上加速度的
ball
的運動表示如下:
vx+=ax;
vy+=ay;
ball.x+=vx;
ball.y+=vy; 二、
摩擦力摩擦力即阻礙運動的力,在運動演算法裡面表現為減小現有速度。設摩擦力為
friction,
則有速度為
speed,與x
軸的夾角為
angle
。則有:
speed=math.sqrt(vx*vx+vy*vy);
angle=math.atan2(vy,vx);
再根據判斷確定
speed:
if(speed>friction)else
應用到ball
裡面則有:
vx=math.cos(angle)*speed;
vy=math.sin(angle)*speed;
ball.x+=vx;
ball.y+=vy; 三、
緩動緩動即物體在移向某處時速度逐漸慢下來,一般的即從大速度到
0,明顯緩動時的速度與和目標點的經歷有關係。一般的設目標點為(
targetx,targety),
速度為vx和vy
,物體為
ball
。則緩動演算法如下:
vx=(targetx-ball.x)* parameter
vy=(targety-ball.y)* parameter
ball.x+=vx;
ball.y+=vy;
因為直接用目標點座標減去球座標會導致初速度過大,所以一般乘以乙個小於
1的引數。將以上**加入到
enterframe
處理器裡面便可實現緩動。 四、
彈性彈性和緩動類似,彈性就是從
0到大速度再由大速度到
0的迴圈過程。引數設定和緩動一樣。所以一般的彈性**如下:
ax=(targetx-ball.x)* parameter
ay=(targety-ball.y)* parameter
vx+=ax;
vy+=ay;
ball.x+=vx;
ball.y+=vy;
緩動時通過加速度控制速度的,在經過目標點時速度最大。球就會繼續向前移動,但是超過目標點後ax、
ay為負數了,vx、
vy也就會減小了。直至速度為
0,此時加速度為反方向最大,從而球又會向目標點移動。從而迴圈下去達到彈性的效果。
關於as3運動效果的總結
看了 actionscript3.0高階動畫教程 一書,用類對映的方式做了乙個小東西,方便學習,經過幾天發現了一些as3 動畫的小技巧,下面我們一起分享一下。所有的運動都借助幀事件或定時器來做,可以只使用乙個幀事件或乙個定時器來完成所有運動的監聽和運算,節省開銷。運動是變化,它的普遍做法是 第一初始...
Tween類,flash緩衝效果講解 as3 0
最近做的東西,對於效果程式設計比較多,特別是緩衝,加速度等效果,特意研究了一下tween類,過年沒什麼禮物給大家,寫篇教程分享給大家,算是過年送給大家的新年禮物!下面是官方寫的fl.transitions.tween類 可以先嘗試看一下這段 的寫法,用這個方法去看 從建構函式看起,假設我使用了該類 ...
Tween類,flash緩衝效果講解 as3 0
最近做的東西,對於效果程式設計比較多,特別是緩衝,加速度等效果,特意研究了一下tween類,過年沒什麼禮物給大家,寫篇教程分享給大家,算是過年送給大家的新年禮物!下面是官方寫的fl.transitions.tween類 可以先嘗試看一下這段 的寫法,用這個方法去看 從建構函式看起,假設我使用了該類 ...