我正在尝试删除MovieClip,但它说参数child必须为非null。
这是我的剧本:
为了使它成为舞台,我使用:
function sayam (e:MouseEvent):void{
nilai = 8;
if(nilai == temp) {
var ssAyam:ayam_mc = new ayam_mc
stage.addChild(ssAyam);
ssAyam.x = 350.0;
ssAyam.y = 330.0;
ssAyam.width = 170.0;
ssAyam.height = 170.0;
ssAyam.instanceName = "Ayam";
arnam.push("Ayam");
trace("arnam" +arnam);
trace(ssAyam.instanceName);
jual = jual + 4000;
temp = val[len-(len-len2)]
len2 = len2 + 1;
} else {
money = money - 4000;
}
}
因此,我制作了8个函数,使8个动画片段在舞台上显示并将它们推送到数组。 数组是“arnam”。
这是我的删除代码:
function deleteBurger() {
for(var i:Number=arnam.length; i >= 0; i--){
removeChild(arnam[i]);
arnam.splice(i,1);
}
}
我已经跟踪了我的数组并且它不是空的。
任何人都可以帮助我吗?谢谢你:))
答案 0 :(得分:2)
我喜欢这样做以将数组归零并操纵成员:
while( arnam.length )
{
removeChild( arnam.pop() );
}
现在,我会使用Vector的MovieClip来强类型,而不是数组。并且在尝试删除之前使用contains()来检查MovieClip是否仍在舞台上:)
答案 1 :(得分:1)
您不应该根据此数组的长度修改循环中的数组,行为将是不可预测的。
for each(var child:Sprite in arnam){
stage.removeChild(child);
}
arnam = [];
答案 2 :(得分:0)
试试这个
for(var i:int=arnam.length-1; i >= 0; i--){
removeChild(arnam[i]);
arnam.splice(i,1);
}