推 del680202:嗯嗯 我試試看 感謝回復 09/09 17:49
用個Array記錄所有的粒子(也就是你的火苗)的資訊
包括reference, life(剩下的生命), 速度, 重力場, etc.
為了方便,我們就只討論reference跟life
這個Array叫做_particles
裡面有一系列的Object記錄著reference和life
然後重複呼叫一個step()
每次呼叫的時候都會讓每筆資料的life減少
等到life變為零之後,這個粒子就會被移除
不只是資料從_particles中移除,粒子也會被removeChild()
所以大致的code會像這樣,你可以參考看看:
//新增particle (這裡的粒子就叫做fire,也就是你的火苗)
addChild(fire);
_particles.push({particle:fire, life:100});
//你要怎麼新增粒子都行,但是記得_particles也要新增對應的資料
//重複執行step()
addEventListener(Event.ENTER_FRAME, step);
function step(e:Event):void {
for (var i:int = _particles.length - 1; i <= 0; i--) {
//每次值型都扣除一點生命
_particles[i].life--;
//當生命歸零的時候
if (_particles[i].life <= 0) {
//把這個資料移掉
_particles.splice(i, 1);
//也把粒子removeChild()除掉
removeChild(_particles[i].particle);
}
}
}
要注意的是我for迴圈是 "倒著跑"
是從 _particles.length - 1 跑到 0
因為從後面開始來移除Array的element
才不會有 "漏項" 的情形發生
--
CJ Cat = Croa'J Cat = Cockroach Cat = 西街凱特 = 蜚蠊貓 = 蟑螂貓
Blog http://cjcat.blogspot.com
Gallery http://cjcat2266.deviantart.com
ptt2 Board CJWorkshop - 阿多比閃光(Adobe Flash)研討區
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.228.90.160