有没有办法编写涉及以下内容的if
语句?
if (MovieClip1 reaches last frame)
{
addChild(MovieClip2)
removeChild(MovieClip1)
}
基本上,我想要发生的是当我的MovieClip完成时,它将改变为另一个MovieClip或图像。我知道这可能很简单,但我该怎么做呢?
答案 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);
}
}
}
}