在 actionscript 3 中使用多个或仅一个事件监听器

Posted

技术标签:

【中文标题】在 actionscript 3 中使用多个或仅一个事件监听器【英文标题】:Using multiple or only one eventlisteners in actionscript 3 【发布时间】:2012-08-22 05:11:17 【问题描述】:

很抱歉这个蹩脚的问题,但我不知道如何搜索它。因此,如果我有两个来自同一班级的事件,例如:

package  
import flash.events.Event;

public class StylingEvent extends Event
    public static const BLUE_BG:String = "blue_bg";
    public static const GREEN_BG:String = "green_bg";

    public function StylingEvent(type:String) 
        super(type);
    

我是否需要添加两个事件监听器,例如:

gameData.addEventListener(StylingEvent.BLUE_BG, onChangeBg);
gameData.addEventListener(StylingEvent.GREEN_BG, onChangeBg);

或者有没有可能:

gameData.addEventListener( [any type of stylingEvent] , [some method]);

谢谢

【问题讨论】:

别忘了你也应该重写克隆功能 - 见***.com/questions/3585638/… 这很酷,谢谢,但是我现在没有写,因为我只使用类常量,而且代码中有很多 $ 和其他奇怪的符号,所以我不想要现在就明白了 【参考方案1】:

如上所示,是的,您需要添加两次事件监听器。

要仅添加一个事件侦听器,您可以修改事件类以便只有一个事件名称:

public static const BACKGROUND_CHANGED = "backgroundChanged";

然后在你的事件类中添加一个存储颜色的属性:

public var backgroundColor:uint;

在调度事件时,指定颜色:

var event:StylingEvent = new StylingEvent();
event.backgroundColor = 0x0000FF;
dispatchEvent(event);

【讨论】:

【参考方案2】:

我认为您需要同时添加两个事件监听器。请参见此处:addEventListener(type:String, listener:Function) 他们正在使用您正在定义的那些常量的字符串表示形式。我不知道如果这些字符串相同会发生什么。你可以自己写一个这样的函数来保存一些代码:

function addAllEvents(obj:Object, fun:Function) 
   obj.addEventListener(StylingEvent.BLUE_BG, fun);
   obj.addEventListener(StylingEvent.GREEN_BG, fun);

【讨论】:

以上是关于在 actionscript 3 中使用多个或仅一个事件监听器的主要内容,如果未能解决你的问题,请参考以下文章

Actionscript 3如何一次移动多个对象而没有延迟

Swift : 使用多个 swift 文件或仅使用一个 viewController?保持清洁

ActionScript 包中有多个类?

在舞台上有多个玩家 actionscript 3.0 php MySQL

将复合主键限制为仅一条记录为“未删除”(其中多个“已删除”记录不调用约束)

具有 MagicalRecord 的多个数据库或仅将部分数据库同步到 iCloud