Arrays [AS3]使用数组删除特定子级

Arrays [AS3]使用数组删除特定子级,arrays,actionscript-3,removechild,Arrays,Actionscript 3,Removechild,我正在创建一个游戏,其中带有简单数学方程的泡泡从屏幕顶部掉落,你必须输入答案才能使特定的泡泡消失。唯一的问题是我需要一个可以删除与答案对应的气泡的系统。我使用动作框架代码和mathBubble作为类。我将首先显示帧代码 stop(); var cooldown:int = 200; var cooldownMax:int = 200; inputAnswer.restrict = "^A-Za-z"; addEventListener(Event.ENTER_FRAME, bubbleSpawn

我正在创建一个游戏,其中带有简单数学方程的泡泡从屏幕顶部掉落,你必须输入答案才能使特定的泡泡消失。唯一的问题是我需要一个可以删除与答案对应的气泡的系统。我使用动作框架代码和mathBubble作为类。我将首先显示帧代码

stop();
var cooldown:int = 200;
var cooldownMax:int = 200;
inputAnswer.restrict = "^A-Za-z";
addEventListener(Event.ENTER_FRAME, bubbleSpawn);

function bubbleSpawn(e:Event) {

    if (cooldown>cooldownMax) {
        var bubble = new mathBubble();
        addChild(bubble);
        bubble.x = Math.round(Math.random()*480);
        bubble.y = 0;
        cooldown = 0;
    }

    cooldown += 1;

}

package {

    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.text.*;

    public class mathBubble extends MovieClip {

        var firstInteger:int;
        var equationSymbol:int;
        var secondInteger:int;
        var mathAnswer:int;
        var firstSpace:String;
        var secondSpace:String;
        var mathAnswerString:String;

        function mathBubble() {
            firstInteger = Math.round(Math.random()*9);
            equationSymbol = Math.round(Math.random()*2)+1;
            secondInteger = Math.round(Math.random()*9);

            trace("bubble spawned");

            firstSpace = String(firstInteger);
            secondSpace = String(secondInteger);
            firstNumber.text = firstSpace;
            secondNumber.text = secondSpace;

            if (equationSymbol==1) {
                mathSymbol.text = "+";
                mathAnswer = firstInteger+secondInteger;
                mathAnswerString = String(mathAnswer);
                trace(mathAnswerString);
            }
            if (equationSymbol==2) {
                mathSymbol.text = "-";
                mathAnswer = firstInteger-secondInteger;
                mathAnswerString = String(mathAnswer);
                trace(mathAnswerString);
            }

            if (equationSymbol==3) {
                mathSymbol.text = "x";
                mathAnswer = firstInteger*secondInteger;
                mathAnswerString = String(mathAnswer);
                trace(mathAnswerString);
            }

            addEventListener(Event.ENTER_FRAME, bubbleFall);
            function bubbleFall(e:Event) {
                y += 1;
            }
        }
    }
}
阅读代码并不是完全必要的,我只是想知道是否有人可以解释我如何使用数组删除每个孩子,每个孩子通过变量“mathAnswer”和“mathAnswerString”得到的答案与随机答案相同
我想数组就是这样工作的,但如果有其他方法,请说出来。感谢您阅读本文。

您可以使用带有应答属性的CustomEvent。给出答案后,发送一个带有答案的事件,然后每个气泡可以对照自己的答案进行检查

如果字符串相同,则需要在气泡中实现一个remove函数,在该函数中删除所有事件侦听器,最后由父对象删除子对象

要分派和侦听事件,可以将事件分派器作为参数传递给每个气泡

对于要移除自身的子对象:

    if(this.parent != null )
       this.parent.removeChild( this );

对于在y位置大于50后移除自身的子对象,我不确定让子对象移除自身是否是更好的解决方案,因为您必须在每个气泡中实现一个enter frame事件侦听器。。。让容器中的单个事件侦听器检查所有气泡可能会更有效。

谢谢您的回答,但您能向我解释一下如何让孩子自行移除吗?像在任何情况下一样,如果我希望它在y大于50后删除自身(出于测试目的),如果(y>50){if(this.parent){this.parent.removeChild(this)},实际上不是。无论如何,您都需要在每个气泡中循环,您可以使用ENTER_FRAME(最佳OOP方式)或在主类上循环。