我正在使用Adobe Flash CC创建操作HTML5画布的EaselJS输出。但是,将参数传递给事件监听器的能力似乎存在巨大的疏忽。
问题在于我提供了多个动画输出以实现兼容性,一个使用EaselJS,一个使用Raphael,但是控制它们的界面保持不变,这些是纯HTML元素,数据存储在我希望的属性中通过触发事件和传递参数来调用在Flash IDE中编写的函数。
我可以很容易地找到避免使用EventDispatcher
的方法,例如将它们注册到根对象并使用自定义处理程序直接调用它们。但是,我宁愿保持我的Flash IDE输出尽可能普遍兼容,也不要污染我无法控制的对象的命名空间。我认为在Flash IDE中编写代码是一种糟糕的设计模式,在没有外部帮助的情况下无法工作。
有没有办法将参数从EaselJS事件调度程序传递给侦听事件?我知道on()
提供了一个数据参数但是没用,因为我需要根据用户交互将不同的参数传递给同一个事件。
答案 0 :(得分:0)
您可以在所需的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);
}
希望有所帮助!