我正在使用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)
这样的东西,但那也不行。我该如何从舞台上取下硬币?
有任何帮助吗?提前谢谢。
答案 0 :(得分:2)
删除DisplayObject最安全的方法是
if (muntje && muntje.parent) muntje.parent.removeChild(muntje);
这样你就不关心谁拥有这个对象,它只会从任何东西中移除(如果它被添加到任何东西中。)