Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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
Actionscript 3 AS3通过引用使对象无效_Actionscript 3 - Fatal编程技术网

Actionscript 3 AS3通过引用使对象无效

Actionscript 3 AS3通过引用使对象无效,actionscript-3,Actionscript 3,我似乎有人问过这个问题,得到的答案是在AS3中这是不可能的 所以我有一个叫做destroymc的函数: function destroymc(mcname:MovieClip):void{ mcname = null } 这不会毁掉我想毁掉的电影唇。因为它是通过引用传递的 真的没有办法让这一切顺利吗 谢谢。嗯,据我所知,要在AS3.0中“销毁”MovieClip,您需要删除对它的所有引用,并且需要从父级中删除它。然后GC可以收集它 如果你有一系列的电影嘴唇,那么像这样的东西就可以了 v

我似乎有人问过这个问题,得到的答案是在AS3中这是不可能的

所以我有一个叫做destroymc的函数:

function destroymc(mcname:MovieClip):void{
    mcname = null
}
这不会毁掉我想毁掉的电影唇。因为它是通过引用传递的

真的没有办法让这一切顺利吗


谢谢。

嗯,据我所知,要在AS3.0中“销毁”MovieClip,您需要删除对它的所有引用,并且需要从父级中删除它。然后GC可以收集它

如果你有一系列的电影嘴唇,那么像这样的东西就可以了

var mcs:Array;
// populate array

// to destroy the first one
mcs[0].parent.removeChild(mcs[0]); // remove the first element from its parent
mcs.shift(); // remove the first element in the array
因此,如果您想在函数中输入,可以将数组传递给它

function destroymc(mcs:Array){
    mcs[0].parent.removeChild(mcs[0]);
    mcs.shift();
}

我在这里使用一个数组,因为您需要将这样的函数用于动态生成的MovieClips和实体管理器等。我希望这能有所帮助。

谢谢,我已经知道如何将其从显示列表中删除,但问题是很难删除所有引用。我知道您可以将对象设置为null,但在您通过引用函数传递之后,就不能设置为null。这是我不知道的主要问题我明白了。这对您没有帮助,只需组织您的代码,使其不具有多余的引用。不要将引用传递给处理MovieClips的函数,而是为不同类型的函数提供一个或多个中央数组,并将索引或id传递给函数,这些函数随后作用于该数组。此外,当使用事件侦听器将对象作为目标时,请使用“弱”引用。此外,为了让GC收集它,movieclip本身必须设置为null right?它是通过引用传递的,但是引用是函数作用域的临时引用,在函数执行后它将不存在。