Обнаружение столкновения hitTestObject не работает в as3! - PullRequest
0 голосов
/ 26 августа 2009

Я пытаюсь создать платформерную игру и пытаюсь заставить "player1" остановиться, когда он достигнет "платформы". вот мой код, пока

    gotoAndStop("gameStart");

import flash.display.MovieClip;
import flash.events.*;
import flash.ui.Keyboard;
import flash.ui.*;


import flash.utils.Timer;
import flash.events.TimerEvent;

player1.gotoAndStop("nothing");


 //private var speed:Number = 0;
 //private var maxspeed:Number = 4;

var myTimer:Timer = new Timer(10,0);


stage.focus = this;


player1.addEventListener(Event.ENTER_FRAME,enterFrameHandler);
/*
myTimer.addEventListener(TimerEvent.TIMER,someFunction);



myTimer.start();

function someFunction(event:TimerEvent) {
 player1.y += 2;


}
*/

function setup() {
 stage.addEventListener(KeyboardEvent.KEY_DOWN, reactToArrowKeys);
}
setup();


function reactToArrowKeys(keyEvent:KeyboardEvent) {

 if (keyEvent.keyCode == 37) {

  if (player1.x > 0) {
   player1.x -= 5;
  }

 } else if (keyEvent.keyCode == 39) {

  if (player1.x < 700) {
   player1.x += 5;
  }

 }


}


function enterFrameHandler(e:Event):void {
   if (player1.hitTestObject(platform)) {
    trace("hitting");
   } else {
    player1.y += 4;
   }
  }

однако функция hitTestObject (enterFrameHandler) не работает должным образом и всегда будет следовать «другому» маршруту.

пожалуйста, помогите!

1 Ответ

1 голос
/ 26 августа 2009

Код, как опубликовано, прекрасно работает для меня. Я бы искал другую глупую ошибку - например, если вы скопировали и вставили видеоклипы, у вас может быть более одного клипа на сцене с именем «платформа», и в этом случае ваша ссылка может не соответствовать той, которую вы намерены. Или что-то еще в этом духе.

Чтобы отследить, попробуйте позвонить:

trace( player1.getBounds(stage) );
trace( platform.getBounds(stage) );

, который скажет вам, где Flash считает ограничивающие рамки этих клипов. Я предполагаю, что код вернет что-то, отличное от того, что вы ожидаете, и устранение этого несоответствия покажет, где находится ошибка.

...