我应该在哪里编写Flash游戏循环的代码?

时间:2011-05-28 14:28:39

标签: flash actionscript-3 actionscript

我正在进行从Java到Flash / Actionscript的转换,而且由于闪存具有与Java不同的“帧”,因此我很难确定在哪里为我的Flash游戏循环(或引擎)编写代码。

我是否能够将循环置于Document类中,即使游戏中有类似的游戏菜单?我没有找到一种方法将它放在那里,而不是它总是在flash应用程序开始时运行。

或者我应该让每个帧都调用游戏循环?例如,第4帧将是1级,因此将在那里调用引擎。并且第5帧将是第2级并且在那里调用游戏引擎的不同实例。那可能吗?

我只是因为“帧”而遇到困难。那么游戏循环的最佳位置在哪里?

谢谢!

3 个答案:

答案 0 :(得分:4)

如果你是一名认真的Java工程师,你将很快学会避免框架的陷阱。在您的文档类中,您可以通过侦听Event.ENTER_FRAME:

来创建主游戏循环
package
{
    import flash.display.Sprite;
    import flash.events.Event;

    public class DocumentClass extends Sprite
    {

        public function DocumentClass():void
        {
            init();
        }

        private function init():void
        {
            addEventListener(Event.ENTER_FRAME, iterate);
        }

        private function iterate(event:Event):void
        {
            // loop here
        }

    }
}

您可以通过删除事件侦听器来停止循环。

对于更复杂的游戏,人们通常需要创建多个ENTER_FRAME侦听器。在这种情况下,使用“自动收报机”或其他一些设备可以更有效地减少玩家的事件构造数量。

希望这有帮助, 艾力

答案 1 :(得分:0)

您也可以使用定时器,其优点是您可以为电影设置较低的帧速率,以及较高的定时器间隔,然后如果您检测到需要重新绘制屏幕的某些部分,则可以调用e。 updateAfterEvent()或忽略它。你会以这种方式获得表现,虽然你可能不需要它的好处并且会使你的游戏变得更复杂。

答案 2 :(得分:0)

  

例如,第4帧将是1级,因此将在那里调用引擎。并且第5帧将是第2级,并且在那里调用不同的游戏引擎实例。

这是可能的,但我认为特别是如果你来自Java,你应该尽量避免在Flash中的帧上放置代码,甚至使用Flash作为开发环境。 它真的不适合严肃的编程。
Flash Builder对开发人员更友好,基于Eclipse可能对您更熟悉。

在Flash中的时间轴上的帧中编写代码真的很麻烦,你将很难调试甚至找到*#@的位置?你的代码是你需要改变的时候。