2013-06-05 42 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

它工作完美,我从你的例子中学到了很多!非常感谢马蒂! –