2011-05-28 72 views
0

Im从Java转换到Flash/Actionscript和Im有点困难,因为闪存具有与Java不同的“帧”,因此我的Flash代码可能会写入Flash游戏循环(或引擎)。我应该在哪里编写我的Flash游戏循环的代码?

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

或者我应该只是把游戏循环叫做每一帧?例如,第4帧将是第1级,所以引擎将在那里被调用。第5帧将成为第2级,并且在那里称为不同的游戏引擎实例。这有可能做到吗?

由于“框架”,我只是有一个困难的时间。那么,放置游戏循环的最佳地点在哪里?

谢谢!

回答

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侦听器。在这种情况下,使用“播报器”或其他一些可以最大限度地减少播放器事件结构数量的设备通常会更高效。

希望这有助于 亚历克

0

你也可以使用一个定时器,其优点是,你可以为你的电影中的低帧率,以及更高的定时器间隔,那么,如果你发现你需要重绘屏幕的某个部分,您可以调用e.updateAfterEvent()或忽略它。你可以通过这种方式获得性能,尽管你可能不需要它的好处并且会让你的游戏变得更加复杂。

0

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

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

在Flash中编写时间轴上的帧代码非常麻烦,您将很难调试,甚至发现*#@?你的代码是当你需要改变某些东西的时候。

相关问题