hitTestObject碰撞检测在AS3中不工作!
-
19-09-2019 - |
题
我想创建一个成熟的游戏,我试图让“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) );
这将告诉你在哪里闪光认为这些剪辑的边框进行。我的猜测是,代码将返回其他的东西比你期望什么,和解决矛盾将展示的错误是。
不隶属于 StackOverflow