【问题标题】:Objects keep disappearing, even though the HitTest object is removed对象不断消失,即使 HitTest 对象已被删除
【发布时间】:2014-04-06 19:05:45
【问题描述】:

我一直在尝试在 actionscript 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);
        }

    }

我认为错误应该存在于某个地方,但是从我花时间尝试修复它开始,我的头疼得厉害。

在此先感谢,并为我的英语不好感到抱歉。 干杯。

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    根据您的代码和我从中可以理解的内容,您并没有更新您的代码,以使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))
    

    这样,碰撞检查只有在实际有块时才会发生。

    【讨论】:

    • 嘿TreeTree,这行得通,但是当我通过命令创建另一个块时,它给了我一个错误,它不能指向一个空对象。
    • 嗯,我不知道你的代码是什么样的,这不再与这个特定的问题相关。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2017-10-21
    相关资源
    最近更新 更多