【问题标题】:hitTestObject collision detection not working in as3!hitTestObject 碰撞检测在 as3 中不起作用!
【发布时间】:2009-08-26 01:26:48
【问题描述】:

我正在尝试创建一个平台游戏,并且我正在尝试让“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)不能正常工作,总是走“else”路线。

请帮忙!

【问题讨论】:

  • 您能提供更多信息吗?因为它对我有用。我创建了一个名为 player1 的 MovieClip 和一个名为 platform 的砖块,它会检测到点击。

标签: actionscript-3 collision-detection runtime-error hittest


【解决方案1】:

发布的代码对我来说很好用。我会寻找其他一些愚蠢的错误 - 例如,如果您复制和粘贴电影剪辑,您可能在舞台上有多个名为“平台”的剪辑,在这种情况下,您的引用可能无法解析为您的那个打算。或者其他类似的东西。

要追踪它,请尝试调用:

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

这将告诉您 Flash 认为这些剪辑的边界框在哪里。我的猜测是代码会返回与您预期不同的内容,解决该差异将显示错误所在。

【讨论】:

  • ooooooh 好吧,我不知道你不能在名为平台的剪辑上拥有更多!谢谢!
  • 是的,如果你这样做,当你提到“平台”时,Flash 只会选择其中之一。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 2013-01-13
  • 1970-01-01
相关资源
最近更新 更多