如何循环代码而不在AS3中设置明确的结尾

时间:2016-04-20 18:32:48

标签: actionscript-3 flash actionscript adobe

我有一个框架,里面有动作。代码不在函数中,因此它循环。现在我添加了一个新场景,它立即跳转到新场景。是否有一个我可以使用的循环,只有在player1和thisBall之间发生碰撞时才会执行?

2 个答案:

答案 0 :(得分:2)

作为null评论,不要使用场景(它们真的是一袋伤害)。尽管如此,你似乎还需要一个游戏循环。这很常见......

addEventListener(Event.ENTER_FRAME, onEnter);
function onEnter(e:Event):void {
    //do stuff
}

您需要考虑的方式就像看视频一样。每次“框架”运行一些逻辑,例如ball.x += 1;,每次屏幕更新时都会将球移动到屏幕右侧(例如,新的“框架”)。如果您想在满足条件时做其他事情,可以将其添加到循环逻辑中。

function onEnter(e:Event):void {
    ball.x += 1;

    if (ball.x == player.x) {
        trace("You've hit the player with the ball.")
    }
}

这是非常基本的,如果您使用的是类或更大的框架,我不会这样解决它,但是现在这应该可以帮到你。

答案 1 :(得分:0)

如果在根时间轴中,您有两个MovieClip,一个在第1帧,第一个在第2帧,您可以在主文档中使用它:

public class Main extends MovieClip {
   public function Main() {
       super();
       stop();
       addEventListener('collision', onCollision);
   }
   private function onCollision(e:Event) {
       nextFrame();
   }
}

然后,在第1帧的MC中的任何地方(希望在附加的类中),您可以拥有以下代码:

dispatchEvent(new Event('collision', true));

您的主要文档类将“听到”该事件并转到下一帧,其中包含您希望接下来看到的内容。