如何解决AS3中的legend error#2025?

How to solve the legend error#2025 in AS3?

感谢您看到我的 post。 转到问题: 我在库中有 2 个名为 "thebugboss" 和 "spiderboss" 的 Movieclip,它们都链接到它们的 Class。我将它拖到舞台上并将其命名为 "bugboss" 和 "spiderbossit"。我也把它们推到老板阵列。当我杀死老板时,它有一些输出消息 2025 但我的代码仍然有效。 但我担心,因为我的代码现在不干净,而且我认为它可能每次都出错。这是我的代码:

var currentboss:Number=0;
stage.addEventListener(Event.ENTER_FRAME, defeatboss);
function defeatboss(e:Event):void
{
    for (var kb:int=0; kb<bossArray.length; kb++)
    {
        var bosshientai=bossArray[kb];
        if (bosshientai.hp<=0)
        {
            if (currentboss==0)
            {
                addReward(bosshientai.x ,bosshientai.y ,3);
                addReward(bosshientai.x-10 ,bosshientai.y ,3);
                addReward(bosshientai.x-20 ,bosshientai.y ,3);
                addReward(bosshientai.x-30 ,bosshientai.y ,3);
                removeChild(bosshientai);
                bossArray.splice(kb, 1);
                stage.removeEventListener(Event.ENTER_FRAME, bugbossLoop);
                bugTimer.stop();
                bugTimer2.stop();
                bugTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, buggo);
                bugTimer2.removeEventListener(TimerEvent.TIMER_COMPLETE, bugstop);
                currentboss++;
            }
            if (currentboss==1)
            {
                addReward(bosshientai.x ,bosshientai.y ,3);
                addReward(bosshientai.x-10 ,bosshientai.y ,3);
                addReward(bosshientai.x-20 ,bosshientai.y ,3);
                addReward(bosshientai.x-30 ,bosshientai.y ,3);
                removeChild(bosshientai);
                bossArray.splice(kb, 1);
                stage.removeEventListener(Event.ENTER_FRAME, spiderLoop);
                spiTimer.stop();
                spiTimer2.stop();
                spiTimer.removeEventListener(TimerEvent.TIMER_COMPLETE, spigo);
                spiTimer2.removeEventListener(TimerEvent.TIMER_COMPLETE, spistop);
                currentboss++;
            }
        }
    }
}

你只需要关心"removeChild"。它的错误是这样的:

ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
    at flash.display::DisplayObjectContainer/removeChild()
    at Holyshitman_fla::MainTimeline/defeatboss()

请问如何解决这个问题,虽然我的代码仍然有效。如果那个问题太难了,请告诉我它对我的比赛有影响吗?

非常感谢。也很抱歉,因为我的英语不好。

"I drag thebugboss to the stage, then I name it bugboss. I use this : bossArray.push(bugboss);. And the bosshientai is like this"

不要把老板拖上舞台。通过代码添加它。您的代码 bugboss.x 似乎可以工作,因为它正在与实例名称为 bugboss 的阶段对象对话。 removeChild 需要一个变量而不是拖动的项目。

"The supplied DisplayObject must be a child of the caller" 发生错误是因为您显示的代码没有添加它(您拖动),所以现在代码无法删除本身没有添加的内容。

假设链接名称是 thebugboss:

1) 创建thebugboss class:

的新实例(即:一个新副本)
public var bugboss : thebugboss = new thebugboss();

2) 添加到舞台并添加到阵列。

stage.AddChild(bugboss);
bossArray.push(bugboss);

3) 照常尝试您的其他代码(测试 removeChild()