我想创建一个成熟的游戏,我试图让“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) );

这将告诉你在哪里闪光认为这些剪辑的边框进行。我的猜测是,代码将返回其他的东西比你期望什么,和解决矛盾将展示的错误是。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top