1

EaselJS 的removeChild方法(Stage的一部分)是否也处理附加到该孩子的 eventListeners 的清理?还是必须在移除孩子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);
4

1 回答 1

8

EventListeners 不会被删除removeChild(),因为它们也不会被添加addChild()- 如果您确实想快速删除它们,最快的方法是myChild.removeAllEventListeners();

但是,如果 DisplayObject 没有以某种方式附加到舞台,则鼠标交互将不会调度事件,因为这些事件只会在舞台及其子级中冒泡。

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

于 2013-08-29T22:01:18.373 回答