在AS3和Flash中,“delete”和简单的空帧是否相同?

在AS3和Flash中,“delete”和简单的空帧是否相同?,flash,actionscript-3,oop,Flash,Actionscript 3,Oop,我的意思是,我必须通过AS或清除Flash中的关键帧来删除DisplayObject对象吗?还是相同?是否“必须”删除它们取决于您想做什么。您必须从显示列表中删除它们(使用removeChild()),以便垃圾收集器收集它们(并释放它们的内存)。在Flash Pro中清除关键帧将导致对象从舞台上移除,但我不确定它是否也从内存中移除(因为它可能会在再次出现时保留,例如在循环MovieClip中) >代码>删除>代码>,在ActionScript中几乎不使用,尤其是与C++中的方法一样,它用于释放

我的意思是,我必须通过AS或清除Flash中的关键帧来删除DisplayObject对象吗?还是相同?

是否“必须”删除它们取决于您想做什么。您必须从显示列表中删除它们(使用
removeChild()
),以便垃圾收集器收集它们(并释放它们的内存)。在Flash Pro中清除关键帧将导致对象从舞台上移除,但我不确定它是否也从内存中移除(因为它可能会在再次出现时保留,例如在循环MovieClip中)

<> >代码>删除>代码>,在ActionScript中几乎不使用,尤其是与C++中的方法一样,它用于释放对象的内存。相反,
delete
只能用于从动态对象中删除属性,例如

var obj : Object = {};
obj.name = 'foo'; // Creating the name property on dynamic Object
delete obj.name;  // Removing the name property
trace(obj.name);  // "undefined"
请尽量澄清你的问题。如果你给出一点背景,可能更容易得出你真正想问的问题,并给出一个更相关的答案。

你是否“必须”删除它们取决于你想做什么。您必须从显示列表中删除它们(使用
removeChild()
),以便垃圾收集器收集它们(并释放它们的内存)。在Flash Pro中清除关键帧将导致对象从舞台上移除,但我不确定它是否也从内存中移除(因为它可能会在再次出现时保留,例如在循环MovieClip中)

<> >代码>删除>代码>,在ActionScript中几乎不使用,尤其是与C++中的方法一样,它用于释放对象的内存。相反,
delete
只能用于从动态对象中删除属性,例如

var obj : Object = {};
obj.name = 'foo'; // Creating the name property on dynamic Object
delete obj.name;  // Removing the name property
trace(obj.name);  // "undefined"

请尽量澄清你的问题。如果您提供一点上下文,可能更容易得出您真正想要的结论,并给出一个更相关的答案。

只有在没有对象引用的情况下,从阶段中删除一个对象才能获得GC的自由。@shannetheat,这是正确的,也是有效的一点。我想说的是,人们必须把这个物体从舞台上拿下来,然后才能把它收集起来。通常需要更多,但因为问题不是关于内存管理的,所以我不想详细说明。只有在没有对对象的引用的情况下,从阶段中删除对象才能释放GC。@Shannethat,这是正确的,也是有效的一点。我想说的是,人们必须把这个物体从舞台上拿下来,然后才能把它收集起来。通常需要更多,但因为问题不是关于内存管理的,所以我不想详细说明。