[AS3]使用数组删除特定的子项

时间:2011-11-25 02:16:23

标签: arrays actionscript-3 removechild

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

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”包含的随机答案相同的答案 我认为数组将是如何工作的,但如果还有其他方式,请说出来。感谢您阅读此内容。

1 个答案:

答案 0 :(得分:1)

您可以将CustomEvent与answer属性一起使用。在给出答案的答案后,每个泡泡都可以根据自己的答案进行检查。

如果字符串相同,则需要在气泡中实现删除功能,删除所有事件侦听器,最后删除子项。

要发送和收听事件,您可以将事件调度程序作为参数传递给每个气泡。

让孩子自行移除:

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

至于孩子在y位置大于50后自行移除,我不确定让孩子自行移除是更好的解决方案,因为你必须在每个泡泡中实现一个输入框架事件监听器......在容器中检查所有气泡的单个事件监听器可能更有效。