0

我已经尝试过事先搜索答案,但我不知道应该搜索什么关键字才能找到我想要的。

这是问题。

我正在尝试用 AS3 制作一个简单的回合制策略游戏。我有两个正在使用的课程:

  1. 启动游戏的“主”类
  2. "Castle" 类创建具有发送“攻击”事件功能的城堡。

当游戏开始时 Main 类(主游戏画面)将创建 4 个不同的 Castle 类实例。这些城堡中的每一个都可以选择攻击其他城堡。

我想建立一个功能如下的系统:

  1. 主类包含一个事件监听器来监听“Attack CastleX”(X 是可变的,它会根据被攻击的城堡而变化)

  2. Castle 将调度可能称为“Attack Castle#1”或“Attack Castle#2”的事件来指示它想要攻击的城堡。

  3. 然后主类接收“Attack Castle#1”或“Attack Castle#2”事件。并降低目标城堡的生命值。

我的问题是我不知道如何设置一个事件侦听器,它可以同时侦听“Attack Castle#1”和“Attack Castle#2”或“Attack Castle#3/4/5/6/”事件7"。

我有一种感觉,我可能不得不为此目的使用 String。

4

1 回答 1

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);

然后主类中的监听器就可以处理相应的Castle了:

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

    // Do stuff to the targetCastle.
    //
    //
}
于 2013-06-05T06:52:12.803 回答