粒子**:
仍然要用到以前的小球類,不過稍加改造
package增加了x,y軸的速度,其它沒變private function init():void
}}
原理:在舞台的某一區域放置大量小球例項,然後在某個時刻讓其向四面八方運動即可(即改變每個小球在x,y軸上的座標)
問題:效率!讓cpu在每幀對於大量物件進行重繪是很耗資源的,所以當小球跑出舞台邊界時,得想辦法通知cpu:這些小球不需要再處理了(反正也看不見)!否則純屬折騰cpu,下面的**用乙個陣列存放所有物件例項的引用,然後在enterframe事件中不斷檢測,一旦有物件跑出邊界了,就將其清除,不再理會了.
import fl.controls.label;import flash.text.textfieldautosize;
stage.scalemode=stagescalemode.no_scale;
stage.align=stagealign.top_left;
var count:number=1500;
var radius:uint=30;
var centerx:uint=stage.stagewidth/2;
var centery:uint=stage.stageheight/2;
var arrball:array=new array(count);
//讓小球呈圓形隨機分布
for (var i=0; i=0; i--)
//如果陣列已經為空,則清除enterframe事件
if (arrball.length==0)
//trace(arrball.length);
}}
粒子噴射:
如果看過上篇flash/flex學習筆記(23):運動學原理 並動手實踐過"自由落體運動"的朋友,對於這種粒子效果可能比較容易理解。
原理:將所有粒子聚集於螢幕上某點(本例中為螢幕底部中心點),然後賦給乙個隨機向上的速度(這樣就能向上噴射出),同時為了更效果更自然,還要加入隨機的x軸方向速度(以實現噴射過程中的擴散),最後再加入重力加速度,以實現粒子的自由回落。
效率:為了能最大限度的利用現有物件,當粒子跑出舞台邊界時,重新用**將其定位到發射點,以便下次繼續噴射。
互動:本例中為增強互動性,用滑鼠的x軸位置模擬了風力影響。(在水平方向移動滑鼠可看到噴射方向略有變化)
packageprivate function init():void
addeventlistener(event.enter_frame, onenterframe);
} private function onenterframe(event:event):void
}} }
}
粒子跟隨:
除了利用邊界檢測移除粒子外,在實際開發中也經常利用時間來判斷,比如乙個物件在舞台上存活幾秒後,便將其乾掉。
stage.addeventlistener(mouseevent.mouse_move,mousemovehandler);注:function mousemovehandler(e:mouseevent):void
function enterframehandler(e:event):void
}
模擬布朗運動:
var count:number=200;
//初始化
for (var i:number=0; i<=count; i++)
function enterframehandler(e:event):void
//加入摩擦力因子,看起來更自然
ball.vx=ball.vx*0.9;
ball.vy=ball.vy*0.9;
}
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學習筆記 34 彈性運動
動畫中的彈性運動 從視覺效果上接近 物理經典力學中的單擺運動或彈簧 胡克定律f kx 振動 先看下面的模擬演示 規律 小球先從出發點 初始為最左側 向目標點 中心點 加速狂奔,奔的過程中速度越來越大,但加速度越來越小,等經過目標點時,發現速度太大剎不住車 此時速度達到最大值,但加速度減為0 奔過頭了...