-1

有没有办法编写if涉及以下内容的声明?

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

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

4

2 回答 2

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 的标准命名约定是对所有对象使用小写驼峰式 (thisIsAnExampleOfthat)。包名应该全部小写,只有类名应该大写。

于 2013-07-16T22:04:22.433 回答
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);
            }
        }
    }
}
于 2013-07-18T20:12:49.860 回答