2016-01-18 8 views
-1

Так, у меня есть небольшая проблема при кодировании вспышки, as3 (голом со мной):Трассировка не будет работать

Я работаю над проектом школы, и я делаю лабиринт-игру. У меня есть два объекта, которые нужно реагировать на hittest, мой маленький круг (называемый «brikke») и сам лабиринт (называемый «формой»). - (Я норвежский)

Я нарисовал часть лабиринта во flash (как один большой объект, связанный) и преобразовал его в символ (мувиклип), как для круга.

Моя проблема в том, что, когда я делаю это, круг, кажется, реагирует на невидимые части лабиринта, как PNG. Он реагирует на невидимые «пиксели» в моем рисовании лабиринта, даже если я нарисовал его внутри вспышки, а не png. Но форма лабиринта прямоугольная.

Я также использую клавиатуру для управления кругом вокруг лабиринта.

ЛЮБЫЕ ИДЕИ о том, как я могу это сделать? Сделайте круг hittest с формой лабиринта, и только это, используя клавиатуру для перемещения по кругу. Итак, когда круг попадает в лабиринт «стены», он снова оправится до начала.

ПОЖАЛУЙСТА, ПОМОГИТЕ, ха-ха, я в отчаянии. Надеюсь, что я сделал себя достаточно ясно

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.

Если ваша «брике» больше, вы можете создать в ней больше очков, а затем проверить hitTestPoint для каждой точки. Помните, что вы используете localToGlobal или globalToLocal, чтобы быть уверенным, что вы работаете в одних и тех же координатах.