2016-01-18 93 views
-1

所以,在閃存,AS3編碼時(裸與我)我有一個小問題:的HitTest將無法正常工作

我工作的一所學校的項目,我做一個迷宮遊戲。我有兩個對象需要對命中,我的小圈子(稱爲「brikke」)和迷宮本身(稱爲「形式」)作出反應。 - (我是挪威人)

我畫了迷宮的一部分在閃光燈(作爲一個大對象,連接),並將其轉換爲符號(動畫片段),至於圓圈。

我的問題是,當我進行命中測試時,這個圈子似乎對迷宮的不可見部分(如PNG)有反應。它對我迷宮中的無形「像素」做出了反應,即使我把它畫在閃光燈中,它也不是PNG。但迷宮的形狀是矩形的。

我還使用小鍵盤來控制迷宮周圍的圓圈。

關於如何使這項工作的任何想法?用迷宮的形狀使圓圈成爲最佳狀態,只有這樣,才能使用小鍵盤來導航圓圈。 所以當圓圈撞到迷宮的「牆壁」時,它會再次回到起點。

請幫忙,哈哈,我很絕望。希望我做了我自己再清楚不過

package { 
import flash.display.MovieClip; 
import flash.events.MouseEvent; 
import flash.ui.Keyboard; 
import flash.events.KeyboardEvent; 

public class Dokument extends MovieClip { 

    var startskjerm: Startskjerm=new Startskjerm(); 
    var startknapp: Startknapp=new Startknapp(); 
    var bakgrunnbane: Bakgrunnbane=new Bakgrunnbane(); 
    var brikke: Brikke=new Brikke(); 
    var bane: Bane=new Bane(); 
    var form: Form=new Form(); 
    var regler: Regler=new Regler(); 
    var spilleregler: Spilleregler=new Spilleregler(); 
    var tilbake: Tilbake=new Tilbake(); 

public function Dokument() { 

     addChild(startskjerm); 
     addChild(startknapp); 
     addChild(regler); 

     startknapp.x= 1020; 
     startknapp.y= 350; 

     regler.x= 920; 
     regler.y= 450; 

     startknapp.addEventListener(MouseEvent.CLICK, trykket); 
     regler.addEventListener(MouseEvent.CLICK, klikket); 
     stage.addEventListener(KeyboardEvent.KEY_DOWN, tastetrykk); 

     } 


public function trykket (evt:MouseEvent) { 

     removeChild(startknapp); 
     removeChild(startskjerm); 
     addChild(bakgrunnbane); 
     addChild(bane); 
     addChild(form); 
     addChild(brikke); 

     brikke.x= 200; 
     brikke.y= 95; 

     bane.x= 630; 
     bane.y= 485; 

     form.x= 628; 
     form.y= 449; 

     } 



public function klikket (evt:MouseEvent) { 

     removeChild(regler); 
     removeChild(startskjerm); 
     addChild(spilleregler); 
     addChild(tilbake); 

     tilbake.x= 1100; 
     tilbake.y= 850; 

     tilbake.addEventListener(MouseEvent.CLICK, tilbakeklikk); 

     } 

public function tilbakeklikk (evt:MouseEvent) { 

     removeChild(spilleregler); 
     removeChild(tilbake); 
     addChild(startskjerm); 
     addChild(startknapp); 
     addChild(regler); 

     tilbake.x= 1100; 
     tilbake.y= 850; 

     startknapp.x= 1020; 
     startknapp.y= 350; 

     regler.x= 920; 
     regler.y= 450; 

     tilbake.addEventListener(MouseEvent.CLICK, tilbakeklikk); 

     } 


public function tastetrykk(evt:KeyboardEvent) { 


     if(evt.keyCode==Keyboard.LEFT){ 

      brikke.x= brikke.x-8; 
     } 


     if(evt.keyCode==Keyboard.RIGHT){ 

      brikke.x= brikke.x+8; 
     } 

     if(evt.keyCode==Keyboard.UP){ 

      brikke.y= brikke.y-8; 
     } 

     if(evt.keyCode==Keyboard.DOWN){ 

      brikke.y= brikke.y+8; 
     } 

     if(brikke.hitTestObject(form)== true) { 

      trace('truffet'); 
     } 


    } 


} 

}

+0

顯示您的代碼,快照,任何可以幫助您查看(瞭解)問題的信息... – akmozo

+0

完成後,您現在可以看到我的代碼:) – Codeproblems

回答

0

嘗試使用hitTestPoint,而不是hitTestObject

如果你的'brikke'更大的形狀,你可以創建更多的點,然後檢查hitTestPoint爲每個點。請記住使用localToGlobalglobalToLocal以確保您在相同座標下工作。