2013-06-05 40 views
0

我試過預先搜索答案,但我不知道應該搜索什麼關鍵字才能找到我想要的內容。如何在as3中使用事件構建命令系統?

這是問題。

我想用AS3做一個簡單的回合制戰略遊戲。我正在使用2類:

  1. 「主」類用於啓動遊戲
  2. 的「城堡」級與功能派遣一個「攻擊」事件創建了一個城堡。

當遊戲開始Main類(主遊戲屏幕)將創建4個不同的Castle類的實例。這些城堡中的每一個都可以選擇攻擊其他城堡。

我想設置一個這樣功能的系統:

  1. 主要類包含一個事件監聽器聽到「攻擊CastleX」(X是可變的,它改變根據該城堡是攻擊)

  2. 城堡將派遣一個名爲「Attack Castle#1」或「Attack Castle#2」的活動來表明它想攻擊哪座城堡。

  3. 然後主類接收「Attack Castle#1」或「Attack Castle#2」事件。並減少目標城堡的生命值。

我在這裏的問題是,我不知道如何建立一個事件監聽器,它可以偵聽兩個事件「攻擊城堡#1」和「攻擊城堡#2」或「攻擊城堡#3/4/5/6/7" 。

我有一種感覺,我可能不得不爲此目的使用字符串。

回答

0

所以基本上你想派遣一個事件,該事件有一個屬性指的是你想攻擊的城堡。

public class CastleEvent extends Event 
{ 
    public static const ATTACK:String = "attack"; 

    // Linked to the castle. 
    public var castle:int; 

    public function CastleEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false):void 
    { 
     super(type, bubbles, cancelable); 
    } 
} 

當你的城堡開始攻擊:

var attack:CastleEvent = new CastleEvent(CastleEvent.ATTACK); 
attack.castle = 2; // Specify the castle to attack. 
dispatchEvent(attack); 

然後在主類的監聽器可以處理相應的城堡

這是很容易,當你創建你自己的活動來實現:

private function _manageAttack(e:CastleEvent):void 
{ 
    var targetCastle:int = e.castle; 

    // Do stuff to the targetCastle. 
    // 
    // 
} 
+0

它工作完美,我從你的例子中學到了很多!非常感謝馬蒂! –