Как решить ошибку легенды № 2025 в AS3? - PullRequest
0 голосов
/ 26 октября 2018

спасибо за просмотр моего поста.Перейдите к проблеме: у меня есть 2 мувиклипа с именем "thebugboss" и "spiderboss" в библиотеке, все они связаны с их классом.Я перетаскиваю его на сцену и называю «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 голосов
/ 26 октября 2018

"Я перетаскиваю thebugboss на сцену, затем я называю это bugboss. Я использую это: bossArray.push(bugboss);. И bosshientai похоже наэто "

Не тащите босса на сцену.Добавьте его по коду.Ваш код, такой как bugboss.x, похоже, работает, потому что он обращается к объекту stage с именем экземпляра 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) Попробуйте другой код как обычно (test removeChild())

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...