AS3中的removeMovieClip()
相当于什么?
显然很多人都有同样的问题:
StackOverflow:
其他:
但对我来说,他们的解决方案似乎都不起作用:
我使用 AS3 处理 flash CS4 :
我有一个非常简单的电影,只有一个名为点击的按钮。按下按钮后,将创建一个新的硬币实例:
this.click.addEventListener(MouseEvent.CLICK,justclick);
function justclick(e:MouseEvent){
var money=new coin
this.addChild(money)
money.x=e.stageX
money.y=e.stageY
}
它可能不是最好的代码,但它工作正常。现在,硬币MovieClip应该显示一个小动画并自行删除。在旧的AS2中我会添加:
this.removeMovieClip()
在动画的最后一帧。但这在AS3中并不存在 我试过了,没有成功:
this.parent.removeChild(this) // 'Cannot access a property or method of nullobject reference'...
this.removeMovieClip() // 'removeMovieClip is not a function'
removeMovieClip(this) //'call to possibly undefined method removeMovieClip'
unloadMovie(this)//'call to possibly undefined method removeMovieClip'
解决方案?
谢谢,
答案 0 :(得分:11)
this.parent.removeChild(this);
这个应该工作;这就是我用的东西。我切换到AS3时遇到的一个问题是,有时候它不能作为孩子正确添加,所以你可能想检查一下。如果你还没有将它放在顶部,你还必须导入flash.display:
import flash.display.*
在删除之前,您还应该删除它上面的事件侦听器。
答案 1 :(得分:0)
如果您的动画在第20帧结束。
注意:使用19因为闪存计数帧从零(0)类似于数组索引。
class animatedCloud
{
public function animatedCloud(){
addFrameScript(19, frame20);
}
private function frame20(){
parent.removeChild(this);
}
}
答案 2 :(得分:0)
始终确保自动删除动画片段可以收集垃圾。 这个解决方案从加载的swf的库符号中删除了我的所有实例:
var mc:MovieClip = new definition() as MovieClip;
addChild(mc);
mc.x = 1000 * Math.random();
mc.y = 1000 * Math.random();
mc.addFrameScript(mc.totalFrames - 1, function onLastFrame():void
{
mc.stop();
mc.parent.removeChild(mc);
mc = null;
});
答案 3 :(得分:0)
public static function removeDisplayObject(displayObject:DisplayObject):void {
/* normal code
if(displayObject && displayObject.parent){
displayObject.parent.removeChild(displayObject);
}
*/
displayObject ? displayObject.parent ? displayObject.parent.removeChild(displayObject) : null : null;
}
答案 4 :(得分:-1)
我在MovieClip末尾的一个额外的空白关键帧中使用它应该自行删除:
stop();
MovieClip(parent).removeChild(this);
发现它是最合适的解决方案。