Actionscript 3 尝试删除一个延迟的圆。以错误告终。[AS3]

Actionscript 3 尝试删除一个延迟的圆。以错误告终。[AS3],actionscript-3,Actionscript 3,这是生成一个圆的代码。当它试图移除球时,会显示以下错误。给定的显示对象必须是调用方的子对象。首先,从代码中不清楚“ball”的定义。 如果它是一个数组,那么该行 public function circleSpawnAndRemove(e:TimerEvent):void { ball.graphics.beginFill(0xFFFFFF * Math.sin(0.1 * i), 0.5); ball.graphics.drawCirc

这是生成一个圆的代码。当它试图移除球时,会显示以下错误。给定的显示对象必须是调用方的子对象。首先,从代码中不清楚“ball”的定义。 如果它是一个数组,那么该行

        public function circleSpawnAndRemove(e:TimerEvent):void
    {

        ball.graphics.beginFill(0xFFFFFF * Math.sin(0.1 * i), 0.5);
        ball.graphics.drawCircle(tel, 300 , kaas);
        ball.graphics.endFill();

        trace (i);
        addChild(ball);
        tel = 400;
        kaas = ((125 - (Math.sin(50 * i) * 125 )) + 10)
        i++

        var remover:Timer = new Timer(24);  
        remover.addEventListener(TimerEvent.TIMER, ballRemover);
        remover.start();

        function ballRemover(e:TimerEvent):void
        {
            if ( i > 1 )
            {
                removeChild(ball[i]);
            }

            else
            {
                trace("stresss")
            }
        }
    }
…正在尝试将阵列添加到后台。数组不是显示对象,因此这是不可能的。 如果不是数组,则该行

addChild(ball);  
…将抛出一个错误,因为无论它是什么类型的类,都不太可能像数组一样使用索引表示法。 所以,你需要弄清楚“ball”是什么类,并坚持使用它的一种用法

我建议将ball作为CirclePawnAndRemove函数的局部形状变量,并从removeChild行中删除“[I]”:

removeChild(ball[i]);  

您的代码还有一些其他潜在的问题;例如,“tel”和“kaas”变量在使用后才设置。如果您需要更多帮助,请告诉我。

ball[i]会引用数组中的元素,但您没有ball数组。我也不认为您需要在初始计时器处理程序中嵌套另一个计时器。你能不能在新的球生成之前直接删除上一个球?作为补充:匿名函数,比如你的ballRemover,在AS3中是不好的编码实践。改为将其作为一个私有函数,当您不再需要eventlistener时,不要忘记删除它。
removeChild(ball[i]);  
var ball:Shape = new Shape();
ball.graphics....

..removeChild(ball)