在Flash动作脚本3中停止动画片段的动画

时间:2013-06-15 10:16:25

标签: actionscript-3 flash game-engine movieclip flash-cs6

我是Flash的新手..(不是很新),我想问一个问题。 我刚刚制作(正在进行中)一个游戏,我们必须拍摄从天而降的人。 我打算制造敌人,但我想要发挥一些效果......就像射击一样。 我做了一个效果,在这里我点击了一个新的孩子,它是一个爆炸的影片剪辑动画。但我无法停止动画。它继续循环。我试过stop(); 在符号的最后一帧,但它甚至不会在屏幕上添加孩子。 这是.fla文件: -

http://www.mediafire.com/download/lwol38o4454sphp/Game.fla

这是代码: -

import flash.events.Event;
import fl.motion.MotionEvent;

addEventListener (Event.ENTER_FRAME,moveturret);
Mouse.hide();
var firegun:boom22 = new boom22();

function moveturret (e:Event)

{
    aim.x = mouseX
    aim.y = mouseY
    var differenceX = mouseX - turret.x;
    var differenceY = mouseY - turret.y;
    var radianToDegrees = (Math.PI/180);
    turret.rotation = Math.atan2(differenceY, differenceX)/radianToDegrees;
}


stage.addEventListener(MouseEvent.CLICK,fire);

function fire (e:MouseEvent)

{
    firegun.x = mouseX
    firegun.y = mouseY
    addChild(firegun);
}

1 个答案:

答案 0 :(得分:0)

你可以添加一个事件监听器来检查剪辑何时完成播放,然后让它自行删除。

可能是这样的:

// within your fire() event handler
addChild(firegun);
firegun.gotoAndPlay(1); // just in case
firegun.addEventListener(Event.ENTER_FRAME, removeSelfWhenDone, false, 0, true);



// then new method:
// on every frame tick, check if last frame is reached, if so, remove it from it's parent (which would be the stage)
function removeSelfWhenDone(inputEvent:Event):void {
    var clip:MovieClip = (MovieClip) (inputEvent.target);
    if(clip.currentFrame == clip.totalFrames){
        // also remove the event listener (as it gets added again later)
        clip.removeEventListener(Event.ENTER_FRAME, removeSelfWhenDone, false);
        clip.parent.removeChild(clip);
    }
}