문제

나는 플랫폼 게임을 만들려고 노력하고 있으며 "플랫폼"에 부딪 칠 때 "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)는 제대로 작동하지 않으며 항상 "다른"경로를 취합니다.

도와주세요!

도움이 되었습니까?

해결책

게시 된 코드는 나에게 잘 작동합니다. 예를 들어, 다른 종류의 어리석은 실수를 찾아 볼 것입니다. 예를 들어, 영화 클립을 복사하고 붙여 넣은 경우 "플랫폼"이라는 무대에 둘 이상의 클립이있을 수 있습니다.이 경우 참조가 귀하에게 해결되지 않을 수 있습니다. 의도하다. 또는 그 줄을 따라 다른 것.

추적하려면 전화를 시도하십시오.

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

Flash가 그 클립의 경계 상자가 어디에 있는지 알 수 있습니다. 내 생각에 코드는 당신이 기대하는 것 이외의 다른 것을 반환 할 것이며, 불일치를 해결하면 버그가 어디에 있는지 보여줄 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top