比方說,我們建立一個遊戲,我們有一個玩家角色。在遊戲中角色會做很多動作,如散步,跳,攻擊,搜索目標等:速度優化 - 哪個更好?
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更快?任何想法如何做這個檢查不同? 謝謝。