我正在使用 Adobe Flash CC 创建 EaselJS输出操作 HTML5 Canvas 。然而,在将参数传递给事件监听器的能力方面似乎存在巨大的疏忽。
问题是我提供了多个动画输出以实现兼容性,一个使用 EaselJS,一个使用 Raphael ,但是控制这些的界面保持不变,这些是纯 HTML 元素,数据存储在属性中,我希望通过触发事件和传递参数来调用在 Flash IDE 中编写的函数。
我可以轻松找到避免使用 EventDispatcher
的方法,例如将它们注册到根对象并直接使用自定义处理程序调用它们。不过,我宁愿让我的 Flash IDE 输出尽可能普遍兼容,而不是污染我几乎无法控制的对象的命名空间。我认为在 Flash IDE 中编写代码是一种糟糕的设计模式,如果没有外部帮助就无法工作。
有没有办法将参数从 EaselJS 事件调度程序传递到监听事件?我知道 on() 提供了一个数据参数,但这没有用,因为我需要根据用户交互将不同的参数传递给同一事件。
最佳答案
您可以将任何属性添加到您想要的事件对象上。当您分派(dispatch)事件时,您可以使用“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);
}
希望有帮助!
关于javascript - EaselJS 通过事件传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22750997/