EaselJS - 使用冲突的事件侦听器将原型链中的对象分开

时间:2013-11-05 20:50:06

标签: javascript-events prototypal-inheritance easeljs

我正在使用原型继承,Circle和Square对象都继承自RootShape对象。我正在使用EaselJS并且不确定我遇到的行为是否特定于原型继承,EaselJS库或两者的混合。

您可以在此处看到我的问题:http://fiddle.jshell.net/sdg9/UNY6E/

当我向Circle或Square原型添加事件监听器(特别是“pressmove”监听器)时,它可以正常工作。所有圆形对象都响应圆形原型监听器,所有方形对象也使用方形原型监听器。

当我向RootShape原型添加一个事件监听器时,Circle和Square都继承了我遇到的奇怪行为。 Square事件触发Circle侦听器,反之亦然。事实上,所有3个听众(在RootShape,Circle和Square上)都会被触发。我不认为原型链下面的物体会以这种方式发生冲突。是否有一种替代方法可以在RootShape对象上使用eventListener而不会导致Square和Circle触发彼此的侦听器?

1 个答案:

答案 0 :(得分:2)

您定义的所有事件侦听器似乎都会添加到您的RootShape原型中,而不是每个子原型中。解决方案是在初始化每个子原型时添加事件侦听器。