Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript EaselJS removeChild是否也会删除附加的EventListener?_Javascript_Event Handling_Garbage Collection_Dom Events_Easeljs - Fatal编程技术网

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

Javascript EaselJS removeChild是否也会删除附加的EventListener?,javascript,event-handling,garbage-collection,dom-events,easeljs,Javascript,Event Handling,Garbage Collection,Dom Events,Easeljs,EaselJS的removeChild方法(的一部分)是否也处理附加到该子级的EventListener的清理?或者必须在删除子级之前使用removeEventListener手动删除子级的事件侦听器 例如: stage = new createjs.Stage(canvas); circle = new createjs.Shape(); circle.graphics.beginFill("#333").drawCircle(0,0,5); circle.addEventListener(

EaselJS的
removeChild
方法(的一部分)是否也处理附加到该子级的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);

事件监听器不会在
removeChild()
时删除,因为它们也不会添加到
addChild()
-如果您确实想快速删除它们,最快的方法是
myChild.removeAllEventListeners()

但是,如果某个DisplayObject没有以某种方式连接到后台,则事件不会通过鼠标交互进行调度,因为这些事件只会在后台及其子级中冒泡


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

事件侦听器不会在
removeChild()
上删除,因为它们也不会添加到
addChild()
-如果您确实想快速删除它们,最快的方法是
myChild.removeAllEventListeners()

但是,如果某个DisplayObject没有以某种方式连接到后台,则事件不会通过鼠标交互进行调度,因为这些事件只会在后台及其子级中冒泡


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

因此,本质上,如果使用
removeChild()
对孩子的唯一引用来自家长,那么实际上应该通过垃圾收集的方式删除事件侦听器?是的,我95%肯定这一点,并且从来没有任何问题,但是如果您想超级保存,只需添加一个
removeAllEventListeners()
-不会有多大伤害;-)因此,从本质上说,如果对子级的唯一引用来自父级,那么使用
removeChild()
,实际上应该通过垃圾收集的方式删除事件侦听器吗?是的,我95%确定这一点,并且从来没有任何问题,但是如果您想超级保存,只需添加
removeAllEventListeners()
-不会有多大影响;-)