用 ActionScript 模擬「布朗運動」(Brownian motion)
所謂的「布朗運動」簡單的說就是亂數隨機跑來跑去的、不規則的動畫,使用 ActionScript 程式就可以做出這種隨機不規則的動畫,比起使用Flash 時間軸出來的動畫有趣多了。
swf 動畫預覽
http://www.flycan.com/sample/20091020_Brownian_motion/04_BrownBall.html
西元 1827 年英國的植物學家羅伯特‧布朗(Robert Brown) 在研究花粉和孢子的懸浮狀態的時候,發現花粉微粒會呈現出不規則的運動,後來證實發現其他微細顆粒如灰塵也會有類似同樣的現象….因此布朗運動的大意就是指的就是不規則的隨機運動,詳情請查閱「維基百科」。
西元 2009 年台灣的姜老師在飛肯設計學苑看到 ALEX 老師的「ActionScript 3.0 陣列迴圈特訓班」上課的時候,發現 ALEX 老師介紹如何使用 ActionScript 模擬布朗運動隨機動畫,才嚇然發現原來世界上有布朗運動這種東東….羅伯特真是太偉大了! ALEX 老師也好偉大~
以下這個範例就是 ALEX 老師做的微粒布朗運動隨機動畫程式原始碼:
首先第一步,先製作一個小圓球 MovieClip 元件,在 MovieClip 元件的內部時間軸第一格上,寫 ActionScript 讓小圓球本身呈現出隨機亂數座標移動、隨機亂數透明度、隨機亂數縮放大小…程式碼如下:
var targetX:Number = Math.random()*stage.stageWidth; var targetY:Number = Math.random()*stage.stageHeight; var speed:Number = Math.random()/10; var targetAlpha = Math.random()*1; var targetScale = Math.random()*0.8+0.2; this.alpha = targetAlpha; this.scaleX = this.scaleY = targetScale; this.addEventListener(Event.ENTER_FRAME,onEnterFrameEvent); function onEnterFrameEvent(e:Event) { if (Math.ceil(Math.random()*100)== 1) { targetX = Math.random()*stage.stageWidth; targetY = Math.random()*stage.stageHeight; speed = Math.random()/50; targetAlpha = Math.random()*1; targetScale = Math.random()*0.8+0.2; } this.x += (targetX-x)*speed; this.y += (targetY-y)*speed; this.alpha += (targetAlpha-alpha)*speed; this.scaleX = this.scaleY += (targetScale-this.scaleX)*speed; } |
回到場景上,使用 for 迴圈宣告 50 顆小圓球元件,再用 addChild() 讓小圓球元件顯示在畫面上…程式碼如下:
var total:Number = 50; var container:Sprite = new Sprite(); addChild(container); for (var i:uint=0; i<total; i++) { var _mc:MovieClip = new ball(); _mc.x = stage.stageWidth/2; _mc.y = stage.stageHeight/2; container.addChild(_mc); } |
fla 原始檔下載
http://www.flycan.com/sample/20091020_Brownian_motion/04_BrownBall.fla
ALEX 老師的「ActionScript 3.0 陣列迴圈特訓班」
當您對本文有任何問題或指教,歡迎到我們的【網頁設計交流討論區】一起交流討論喔!