作者cjcat2266 (CJ Cat)
看板Flash
标题Re: [问题]物件生成是否会影响程式执行
时间Tue Sep 9 15:55:16 2008
用个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
1F:推 del680202:嗯嗯 我试试看 感谢回复 09/09 17:49