2014-04-06 85 views
0

我一直试图在actionscript 3中创建游戏,但在过去的4个小时中遇到了一个问题。 每当你按下一个键时,一个块就会出现,颜色取决于你按下哪个键,当敌人击中该块时,它们消失。我这样做是为了让敌人通过removeChild被移除,并且在1秒之后本身消失,但问题在于,在块被移除后,敌人仍然会死亡,尽管块不再是可见的,所以我就是这样。尽管HitTest对象被删除,但对象仍然消失

我使用Vechtblok.as这个代码(这是出现杀死敌人的块),我通过添加事件监听到计时器命名sterf添加此代码,这是功能:

public function gaWeg(e:TimerEvent):void 
    { 
     blok.parent.removeChild(blok); 
    } 

在Vijand.as(敌人类)我有这样的代码为他们dissapear,我给敌人这段代码通过添加事件监听:

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

根据您的代码和我可以理解的内容,您不会更新代码,以致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)) 

这样碰撞检查只发生在实际存在块的情况下。

+0

嘿TreeTree,这个工作,但是当我通过命令创建另一个块时,它给了我一个错误,它不能指向一个空对象。 – user2467128

+0

嗯,我不知道你的代码是什么样的,这不再与这个特定的问题有关。 – TreeTree