2013-06-12 39 views
0

Im在移除舞台上的实例时遇到问题。移除舞台上的所有实例as3

我不断收到我按一下按钮2次后

“提供的DisplayObject必须是调用的孩子”

有人可以帮我这个错误?

package src 
{ 
import flash.display.MovieClip; 
import flash.display.Stage; 
import flash.events.Event; 
import flash.events.MouseEvent; 

public class Main extends MovieClip 
{ 
    var positionY:Number = 80; 
    var positionX:Number = 0; 
    var motion:MovieClip; 
    var fCombo:Array = new Array(); 
    var n:Number; 

public function Main() 
{ 
    generate.addEventListener(MouseEvent.MOUSE_UP, loop); 
    generate.addEventListener(MouseEvent.MOUSE_DOWN, remove); 
    n = Number(inputText.text); 
} 
function loop(me:MouseEvent):void 
{ 
    var combo:Array = [Punch, Kick, Knee, Elbow]; 
    n = Number(inputText.text); 
    for(var i:Number = 0;i < n;i++) 
     { 
     motion = new combo[randomNumber(4)](); 
     fCombo.push(motion); 
     motion.y = positionY; 
     motion.x = positionX; 
     positionX += 100; 
     addChild(motion); 
      if (i == 4 || i == 9 || i == 14) 
       { 
        positionY += 40; 
        positionX = 0; 
       } 
     } 
} 
function remove(me:MouseEvent):void 
{ 
    for (var j:Number = 0; j < n; j++) 
    { 
     removeChild(fCombo[j]);//error 
    } 
    positionY = 80; 
    positionX = 0; 
} 

function randomNumber(max:Number):Number 
    { 
    return(Math.floor(Math.random() * max)); 
    } 
} 

}

+0

removeChild(fCombo [j]); // error'中的'j'从哪里来?它似乎没有被初始化。 – package

+0

你究竟想要做什么?从显示器中删除最后添加的组合吗?从显示中删除当前点击的组合吗? – package

+0

opps,编辑它。 –

回答

1

您添加您创建到阵列的新的对象,然后使用该将其删除。但是你忘了创建一个新列表或从旧列表中删除对象。所以,当时间到了你想要删除已经被删除的对象的列表上。

您可以通过多种方式解决这个问题,一个是去除你的循环从舞台和数组对象:

function remove(me:MouseEvent):void 
{ 
    while(fCombo.length) 
    { 
     removeChild(fCombo.pop()); 
    } 
    positionY = 80; 
    positionX = 0; 
} 
0

targetDisplayObject.parent.removeChild(targetDisplayObject);假设父项不为null,这个技巧是否成立?