Flash错误2007,2025;增加得分似乎崩溃游戏

时间:2011-06-12 13:00:21

标签: flash actionscript-3 actionscript flash-cs5

我正在使用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 个答案:

答案 0 :(得分:2)

删除DisplayObject最安全的方法是

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

这样你就不关心谁拥有这个对象,它只会从任何东西中移除(如果它被添加到任何东西中。)