我有下面的代碼,它工作正常,除了我想要它在庫中播放Explosion
movieclip時EnemyShip
消失,但我只想它播放一次,然後消失,但不太確定如何做到這一點(我'已經嘗試了幾件事情,它或者使爆炸動畫循環和船舶不會消失,我相信這是因爲將它放入kill
函數中,或者我得到其他的ArgumentErrors)。如何讓此代碼正確顯示movieclip?
var speed:Number;
var shot = new ShotSound();
var explosion = new Explosion();
this.x = 800;
this.y = Math.random() * 275 + 75;
speed = Math.random()*5 + 9;
addEventListener("enterFrame", enterFrame);
addEventListener(MouseEvent.MOUSE_DOWN, mouseShoot);
function enterFrame(e:Event)
{
this.x -= speed;
if(this.x < -100)
{
removeEventListener("enterFrame", enterFrame);
stage.removeChild(this);
}
}
function kill()
{
stage.addChild(this);
explosion.x = this.x;
explosion.y = this.y;
removeEventListener("enterFrame", enterFrame);
stage.removeChild(this);
shot.play();
}
function mouseShoot(event:MouseEvent)
{
kill();
}
感謝您收到任何幫助。
我嘗試使用'AddFrameScript'解決方案,但它給出了以下錯誤:'ArgumentError:Error#2025:提供的DisplayO bject必須是調用者的孩子。 \t at flash.display :: DisplayObjectContainer/removeChild() \t at MethodInfo-8()' – Liam 2013-05-07 20:26:27
更新了答案。忘了你的爆炸並不是發佈的代碼的上下文的孩子。 – BadFeelingAboutThis 2013-05-07 20:30:17
這三種方法比使用ENTER_FRAME處理程序在爆炸完成時檢查每個單幀有效得多。第一種方法是最乾淨的方法。 – BadFeelingAboutThis 2013-05-07 20:32:40