我正在进行从Java到Flash / Actionscript的转换,而且由于闪存具有与Java不同的“帧”,因此我很难确定在哪里为我的Flash游戏循环(或引擎)编写代码。
我是否能够将循环置于Document类中,即使游戏中有类似的游戏菜单?我没有找到一种方法将它放在那里,而不是它总是在flash应用程序开始时运行。
或者我应该让每个帧都调用游戏循环?例如,第4帧将是1级,因此将在那里调用引擎。并且第5帧将是第2级并且在那里调用游戏引擎的不同实例。那可能吗?
我只是因为“帧”而遇到困难。那么游戏循环的最佳位置在哪里?
谢谢!
答案 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中的时间轴上的帧中编写代码真的很麻烦,你将很难调试甚至找到*#@的位置?你的代码是你需要改变的时候。