Ошибки флэш-памяти 2007, 2025; увеличение счета кажется сбой игры - PullRequest
0 голосов
/ 12 июня 2011

Я работаю над небольшой игрой во Flash, чтобы понять основы AS3.Однако я столкнулся с некоторой проблемой, которую, похоже, не могу понять.

У меня есть аватар игрока, который должен подбирать мелкие монеты, которые появляются с правой стороны экрана.Эти монеты перемещаются влево, где мой игрок может их поднять.Я хочу убрать их с экрана и увеличить счет на 10, когда персонаж поднимает монету.

Однако, кажется, есть пара ошибок: когда я поднимаю монету, я получаю эти ошибки:

TypeError: Error #2007: Parameter child must be non-null
ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.

Я помещаю монеты в массив, а затем запускаю цикл foreach для них, чтобы заставить их двигаться, и вызываю для них hitTestObject ():

for each(var muntje:Muntje in geldArray)
        {
            muntje.moveMuntje();
            if(playerLola.hitTestObject(muntje))
            {
                removeChild(muntje);
                gameScore.addToValue(10);
            }
        }

Кроме того, когда явозьмите монету, игра не совсем рухнет;кажется, он просто останавливается, выдает (спам) пару таких сообщений об ошибках, а затем увеличивает счет на 10, после чего игра продолжается.

РЕДАКТИРОВАТЬ: я думаю, что я не могу использовать removeChild () здесь, потому что 'muntje' на самом деле не ребенок?Я пробовал что-то вроде stage.removeChild(muntje), но это тоже не сработало.Как мне убрать монеты со сцены?

Любая помощь?Заранее спасибо.

1 Ответ

2 голосов
/ 12 июня 2011

Самый безопасный способ удалить DisplayObject - это

if (muntje && muntje.parent) muntje.parent.removeChild(muntje);

Таким образом, вам все равно, кто держит объект, он просто удаляется из чего-либо (если он вообще был добавлен).

...