EaselJS removeChild是否也会删除附加的eventListeners?

时间:2013-08-29 15:51:00

标签: javascript javascript-events event-handling garbage-collection easeljs

EaselJS的removeChild方法(Stage的一部分)是否也处理附加到该子节点的eventListener的清理?或者您必须在删除孩子之前使用removeEventListener手动删除孩子的事件监听器吗?

例如:

stage = new createjs.Stage(canvas);
circle = new createjs.Shape();
circle.graphics.beginFill("#333").drawCircle(0,0,5);

circle.addEventListener("mousedown",function(event){
    console.log("mouse down");
});
stage.addChild(circle);
.
.
.
stage.removeChild(circle);

1 个答案:

答案 0 :(得分:8)

removeChild()上不会删除<!>} {_ 1}},因为它们也未在addChild()上添加 - 如果您确实想要快速删除它们,那么最快的方式是myChild.removeAllEventListeners();

但是,如果某个DisplayObject没有以某种方式附加到舞台上,则鼠标交互不会调度事件,因为这些事件只会通过舞台及其子节点传播。

如果您担心内存泄漏:EaselJS中的事件直接位于DisplayObject本身,因此每当您删除对该Object的引用时,GarbageCollecter也将(应该)收集事件,不需要单独删除事件。 (拜托,有人在这里纠正我,以防我错了)