在ActionScript中编写“if”语句

时间:2013-07-16 21:57:27

标签: actionscript-3 if-statement movieclip flash-cs6

有没有办法编写涉及以下内容的if语句?

if (MovieClip1 reaches last frame)
{
    addChild(MovieClip2)
    removeChild(MovieClip1)
}

基本上,我想要发生的是当我的MovieClip完成时,它将改变为另一个MovieClip或图像。我知道这可能很简单,但我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

所有代码都按命令运行。因此,您的条件将立即运行,永远不会再运行。

相反,您使用事件。您将一个侦听器附加到一个事件,当该事件触发时(“调度”以使用正确的词汇表),您的代码将再次被调用。

var movieClip:MovieClip = new MovieClip();
movieClip.addEventLister( Event.ENTER_FRAME, this.enterFrameHandler ); //will be called on every frame enter

function enterFrameHandler( e:Event ):void {
    if ( movieClip.currentFrame == movieClip.totalFrames ) {
        // do something
    }
}

所以你要监听每个新帧并在该处理程序中检查它是否是最后一帧。

作为额外的花絮,AS3的标准命名约定是对所有对象使用小写的camelcase(thisIsAnExampleOfthat)。包名称应全部小写,只有类名称应大写。

答案 1 :(得分:0)

package
{
    import flash.display.MovieClip;
    import flash.events.KeyboardEvent;
    import flash.events.Event;

    public class Main extends MovieClip
    {
        var firstScene:FirstScene = new FirstScene;
        var movement:Movement = new Movement;
        var green:Green = new Green;

        public function Main()
        {
            addChild(firstScene);

            firstScene.addEventListener(KeyboardEvent.KEY_DOWN, mClick);
            movement.addEventListener(Event.ENTER_FRAME, endChange);
        }
        function mClick(event:KeyboardEvent):void
        {
            if (event.keyCode == 77);
            {
                addChild(movement);
                removeChild(firstScene);
            }
        }
        function endChange(event:Event):void
        {
            if (movement.currentFrame == movement.totalFrames)
            {
                addChild(green);
                removeChild(movement);
            }
        }
    }
}