EaselJS用事件传递参数

EaselJS passing parameters with events

本文关键字:参数 事件 EaselJS      更新时间:2023-09-26

我正在使用Adobe Flash CC创建EaselJS输出来操作HTML5画布。但是,在将参数传递给事件侦听器的能力方面似乎存在大量疏忽。

问题是我提供了多个动画输出以实现兼容性,一个使用 EaselJS,一个使用 Raphael,但是控制这些的界面保持不变,这些是普通的 HTML 元素,数据存储在我希望通过触发事件和传递参数来调用在 Flash IDE 中编写的函数的属性中。

我可以轻松找到避免使用EventDispatcher的方法,例如将它们注册到根对象并使用自定义处理程序直接调用它们。但是,我宁愿使Flash IDE输出尽可能普遍兼容,并且不会污染我几乎无法控制的对象的命名空间。我认为在Flash IDE中编写代码是一种糟糕的设计模式,如果没有外部帮助,它将无法工作。

有没有办法将参数从 EaselJS 事件调度器传递到侦听事件?我知道on()提供了一个数据参数,但这毫无用处,因为我需要根据用户交互将不同的参数传递给同一事件。

可以将任何属性放在所需的 Event 对象上。当你调度一个事件时,你可以使用一个像"complete"这样的字符串(如果你不需要参数,这更好,因为如果没有侦听器,它不会生成对象)。如果您有参数,请创建一个新createjs.Event,并在其上放置所需的任何属性:

var event = new createjs.Event("complete");
event.time = new Date();
this.dispatchEvent(event);

然后,可以在处理程序中检查事件对象。

myObject.addEventListener("complete", handler); // add a listener
function handler(event) {
    console.log(event.time);
}

希望对您有所帮助!