如何解决AS3中的图例错误#2025?

时间:2018-10-25 23:20:45

标签: actionscript-3

感谢您看到我的帖子。 转到问题: 我在库中有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()

如何解决此问题,尽管我的代码仍然有效。如果这个问题太困难了,请告诉我这是否影响了我的游戏。

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

1 个答案:

答案 0 :(得分:0)

  

”我将 thebugboss 拖到舞台上,然后将其命名为bugboss。我用的是:bossArray.push(bugboss);。还有 bosshientai 就是这样”

不要拖动上司。通过代码添加。像bugboss.x这样的代码似乎可以正常工作,因为它正在与实例名称为bugboss的舞台对象通信。 removeChild 需要一个变量而不是拖动的项目。

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

假设链接名称为thebugboss

1)创建thebugboss类的新实例(即:新副本):

public var bugboss : thebugboss = new thebugboss();

2)添加到舞台,也添加到数组。

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

3)像往常一样尝试其他代码(测试removeChild()