我一直试图在动作3中创建一个游戏,但过去4个小时我遇到了一个问题。 每当你按一个键出现一个区块时,颜色取决于你按下的是哪个键,当敌人击中该区块时他们会消失。我做了这个,以便敌人通过removeChild被移除,并且块本身在1秒后消失,但问题是在块被移除后,敌人仍然死亡,即使块不再可见,所以我在这里。
我在Vechtblok.as中使用此代码(这是看似杀死敌人的块),我通过将eventListener添加到名为sterf的计时器来添加此代码,这是函数:
public function gaWeg(e:TimerEvent):void
{
blok.parent.removeChild(blok);
}
在Vijand.as(敌人类)我有这个代码让他们消失,我通过添加一个eventListener给敌人这个代码:
public function aanval(e:Event):void
{
if(hitTestObject(Vechtblok.blok))
{
teken.removeEventListener(Event.ENTER_FRAME, beweegHor);
trace(String(watbenik));
teken.parent.removeChild(teken);
//removeChild(Vechtblok.blok);
}
}
我认为错误应该存在于某个地方,但是从我花在尝试解决它的时间上来说,我的头部受到了太大的伤害。
提前致谢,抱歉我的英语不好。 欢呼声。
答案 0 :(得分:0)
根据您的代码以及我可以从中理解的内容,您不会更新代码,以致Vechtblok.blok
在删除自身后不再引用同一个块。 hitTestPoint
和hitTestObject
使用对象的边界检查碰撞,无论它们是否在舞台上。
从静态变量Vechtblok.blok
判断,您一次只支持一个块。删除块后,该变量仍然指向它。它不再显示在舞台上。您的碰撞代码仍在检查同一个区块。
你必须修改你的代码:
public function gaWeg(e:TimerEvent):void
{
blok.parent.removeChild(blok);
blok = null;
}
public function aanval(e:Event):void
{
if(Vechtblock.blok != null && hitTestObject(Vechtblok.blok))
这样,碰撞检查仅在实际存在块时发生。