Flash Flex學習筆記 34 彈性運動

2021-08-31 10:24:03 字數 3599 閱讀 9350

動畫中的彈性運動 從視覺效果上接近 物理經典力學中的單擺運動或彈簧(胡克定律f=kx)振動

先看下面的模擬演示:

規律:

小球先從出發點(初始為最左側)向目標點(中心點)加速狂奔,奔的過程中速度越來越大,但加速度越來越小,等經過目標點時,發現速度太大剎不住車(此時速度達到最大值,但加速度減為0),奔過頭了!於是加速度發生逆轉,從0開始變為負值,從而導致速度越來越小,等速度減到0時,也奔到了最右側(此時負加速度也達到最大值),然後在負加速度的影響下,開始掉頭又狂奔....這樣不斷下去,直接摩擦力讓它筋疲力盡,最終癱倒在目標點 :)

公式:胡克定律f=kx,而合外力f根據牛二定律 f=ma,這二者結合起來換算一下,也就是 ma = kx,即a = (k/m)x .用**體現出來,即加速度與位移成(正比)線性關係。

package

privatefunctioninit():void);

ball.addeventlistener(mouseevent.mouse_out,mouseouthandler);

stage.addeventlistener(mouseevent.mouse_up,mouseuphandler);

//畫輔助線

graphics.linestyle(1);

graphics.moveto(ball.x,ball.y);

graphics.lineto(stage.stagewidth-ball.x,ball.y);

graphics.moveto(stage.stagewidth/2,ball.y-10);

graphics.lineto(stage.stagewidth/2,ball.y+10);

rect=newrectangle(ball.x,ball.y,stage.stagewidth-2*ball.x,0);

}

privatefunctionmouseouthandler()

}

//開始拖動

privatefunctionmousedownhandler(e:mouseevent):void

//結束拖動

privatefunctionmouseuphandler(e:mouseevent):void

privatefunctiononenterframe(event:event):void

}

}

上面演示是一維的彈性運動,當然也可以同時在x軸和y軸上進行

**:package

privatefunctioninit():void

functionmousedownhandler(e:mouseevent):void

privatefunctionenterframehandler(event:event):void

}

}

接下來:用**模仿一根猴皮筋兒

package

privatefunctioninit():void

privatefunctiononenterframe(event:event):void

}

}

上面的例子只有乙個球,如果考慮更多的小球,第一球以滑鼠所在位置為目標做彈性運動,而第二個以第乙個球為目標做彈性運動,第三球又跟著第二個... 這會是什麼效果呢?

package

privatefunctioninit():void

firstball=arrball[0];

firstball.x=math.random()*stage.stagewidth;

firstball.y=math.random()*stage.stageheight;

addeventlistener(event.enter_frame,enterframehandler);

}

privatefunctionenterframehandler(e:event):void

}

}

}

ok,我們得到了乙個"彈簧鏈",當然這裡面還考慮了重力的因素,通過上面的幾個例子可以總結一下:第乙個示例中一維彈性運動可以看作為x方向的加速度隨位移的影響,而第二個示例可以看作是x,y二個方向加速度隨位移影響的疊加,而第三個示例,則可以看作是任何方向這種影響再疊加重力的綜合效果。總之:任何方向的彈性運動,都可以認為是該方向的加速度(或力)隨位移的影響,而且這種影響可以在多個方向上疊加。下面這個是多點控制彈性運動的示例:

Flash Flex學習筆記 22 濾鏡學習

silverlight中稱之為 效果 effect 的東東,在flash裡叫 濾鏡 filter 而且flash裡內建的濾鏡要比silverlight豐富很多,幾乎所有物件都有乙個filters的屬性,它是乙個陣列,可以將乙個或多個濾鏡同時應用於某一物件,類似的,如果要去除已經應用的濾鏡效果,只要將...

Flash Flex學習筆記 14 按鍵捕獲

先來看簡單的單個按鍵捕獲 package privatefunctioninit void publicfunctionkeydownhandler e keyboardevent void if e.ctrlkey if e.shiftkey if e.altkey 再來看下類似 a b c 的這...

Flash Flex學習筆記 17 按鍵捕獲

先來看簡單的單個按鍵捕獲 package private function init void public function keydownhandler e keyboardevent void if e.ctrlkey if e.shiftkey if e.altkey 再來看下類似 a b ...