即使删除了HotTest对象,对象也会不断消失

时间:2014-04-06 19:05:46

标签: actionscript-3

我一直试图在动作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);
        }

    }

我认为错误应该存在于某个地方,但是从我花在尝试解决它的时间上来说,我的头部受到了太大的伤害。

提前致谢,抱歉我的英语不好。 欢呼声。

1 个答案:

答案 0 :(得分:0)

根据您的代码以及我可以从中理解的内容,您不会更新代码,以致Vechtblok.blok在删除自身后不再引用同一个块。 hitTestPointhitTestObject使用对象的边界检查碰撞,无论它们是否在舞台上。

从静态变量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))

这样,碰撞检查仅在实际存在块时发生。