比方说,我们建立一个游戏,我们有一个玩家角色。在游戏中角色会做很多动作,如散步,跳,攻击,搜索目标等:速度优化 - 哪个更好?
public class Player extends MovieClip
{
public function Player(){}
private function walk(){}
private function attack(){}
private function jumping(){}
...
..
.
private function update(){}
}
现在,对于每一个国家或行动,我们要执行不同的代码。现在,如何做到这一点?我可以想到3种方法。
1.采用事件 - 据我所知,事件系统是昂贵的使用,所以我会跳过这一个。 2.在更新简单的检查() - 像如果(currentStateAction){} doSomethingHere或switch语句。但是,如果这些行为不是相互排斥的,例如它可以在同一时间跳跃和攻击?我们必须对每个动作使用if(),例如对每一帧进行检查。 3.我想到了我自己的这个解决方案,我需要知道的是这不是选项2号更好:
//declare Dictionary. Here we will add all the things that needs to be done
public var thingsToDo:Dictionary = new Dictionary(true);
//in the update function we check every element of the dictionary
private funciton update():void
{
for each(item:Function in thingsToDo)
{
item.call();
}
}
现在,每当我们需要做一些事情的时候,我们添加一个元素,像thingsToDo[attack]=attack;
或者,如果我们不想再做某件事:delete thingsToDo[attack];
在这个......系统中......你不需要检查每一帧,对象应该做什么,而是只需要检查什么时候需要。这就像一个事件驱动系统。例如说,对象不需要检查攻击,直到新敌人产生。所以。当遇到新的敌人时,你会添加东西[攻击] =攻击;等
所以问题:这是不是选项号3更快?任何想法如何做这个检查不同? 谢谢。