1

我正在使用 Adob​​e Flash CC 来创建操纵 HTML5 画布的EaselJS输出。然而,将参数传递给事件侦听器的能力似乎存在巨大的疏忽。

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

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

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

4

1 回答 1

1

您可以将任何属性放在您想要的 Event 对象上。当你调度一个事件时,你可以使用一个像“完成”这样的字符串(如果你不需要参数更好,因为如果没有监听器它不会生成一个对象)。如果您有参数,请创建一个新的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);
}

希望有帮助!

于 2014-03-31T16:58:36.780 回答