有没有办法编写if
涉及以下内容的声明?
if (MovieClip1 reaches last frame)
{
addChild(MovieClip2)
removeChild(MovieClip1)
}
基本上,我想要发生的只是当我的 MovieClip 完成时,它会变成另一个 MovieClip 或图像。我知道这可能很简单,但我该怎么做呢?
有没有办法编写if
涉及以下内容的声明?
if (MovieClip1 reaches last frame)
{
addChild(MovieClip2)
removeChild(MovieClip1)
}
基本上,我想要发生的只是当我的 MovieClip 完成时,它会变成另一个 MovieClip 或图像。我知道这可能很简单,但我该怎么做呢?
所有代码都按命令运行。所以你的条件将立即运行并且永远不会再次运行。
相反,您使用事件。您将侦听器附加到事件,当该事件触发时(“调度”以使用正确的词汇),您的代码会再次被调用。
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)。包名应该全部小写,只有类名应该大写。
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);
}
}
}
}