2014-03-30 68 views
0

我使用Adobe Flash CC创建操作HTML5画布的输出EaselJS。然而,将参数传递给事件监听器的能力似乎存在巨大的疏漏。EaselJS传递事件参数

的问题是,我提供使用Raphael兼容性多个动画输出,一个使用EaselJS和一个,但是,其控制这些保持相同,这些是与存储在属性数据,我想调用函数普通的HTML元素的接口通过触发事件并传递参数在Flash IDE中编写。

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

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

回答

0

您可以将任何属性放在所需的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); 
} 

希望有所帮助!

+1

请注意,如果重新分派EaselJS事件,则会克隆它,这会放弃您的自定义属性。这应该不是问题,除非您手动重新分派事件,或者事件冒泡。 – Lanny

+0

它是否自从版本0.8起作用anumore –

+0

@DanielSantos - 你能澄清一下吗?这个问题已经快一年了。如果您遇到问题,请发布新问题。谢谢! – Lanny