javascript - EaselJS 通过事件传递参数

标签 javascript html canvas easeljs flash-ide

我正在使用 Adob​​e 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/

相关文章:

html - 禁用我网站上的 Chrome 翻译栏

javascript - 无法从 Chrome 中的 webworker 内部创建 Web Worker

javascript - jQuery 在不同的单选按钮组中选择单选按钮索引

javascript - promise 。 return resolve() 和 resolve() 有什么区别?

分配给 JS 对象的 Javascript Dom 元素 ID?我是疯了还是……?

javascript - 使用 ReactJS 自动选择 span 标签

html5 canvas 游戏在 mobilesafari 上点击变暗

javascript - 使用 html5 canvas 进行墙壁碰撞检测

java - 使用 Canvas 和 JPanel 进行 2D 游戏引擎(和缓冲?)

java - 如何使用 Canvas 在 Java 中制作一组可点击的圆圈?