EaselJS removeChild是否也删除附加的eventListeners



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);

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

然而,如果DisplayObject没有以某种方式附加到Stage,事件就不会通过鼠标交互来调度,因为这些事件只会在Stage及其子级中冒泡。

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

相关内容

  • 没有找到相关文章

最新更新