据报告,该问题通常是由于程序尝试在粒子处理完之前清除粒子而导致的。可以通过以下示例代码解决该问题:
//声明ParticleExplosion类 public class ParticleExplosion extends Sprite { private var particles:Array; private var explosionPower:int = 3;
//构造函数
public function ParticleExplosion()
{
particles = [];
}
//创造粒子
private function createParticle():void
{
var p:Particle = new Particle();
//...
particles.push(p);
}
//更新
public function update():void
{
for each (var p:Particle in particles)
{
//...
}
//清除死掉的粒子
for (var i:int = particles.length - 1; i >= 0; i--)
{
if (particles[i].isDead)
{
particles.splice(i, 1);
}
}
}
//设置爆炸强度
public function setExplosionPower(value:int):void
{
explosionPower = value;
}
//开始爆炸
public function startExplosion():void
{
for (var i:int = 0; i < explosionPower; i++)
{
createParticle();
}
}
}
//声明Particle类,继承自Sprite以及实现IDisposable接口 public class Particle extends Sprite implements IDisposable { private var life:int; private var angle:Number; private var speed:Number; private var gravity:Number; private var decay:Number; private var isDead:Boolean; //... //实现IDisposable接口 public function dispose():void { //清除粒子 //... } //... }
//在应用程序中使用ParticleExplosion类
public class Main extends Sprite
{
private var explosion:ParticleExplosion;
public function Main()
{
explosion = new ParticleExplosion();
explosion.setExp
上一篇:AS3粒子爆炸崩溃