Actionscript 3 as3 hitTestObject在一段时间后不工作
因此,这就是问题中的代码:Actionscript 3 as3 hitTestObject在一段时间后不工作,actionscript-3,flash,flash-cs6,hittest,Actionscript 3,Flash,Flash Cs6,Hittest,因此,这就是问题中的代码: function moveObsticle():void { //move var tempObs:MovieClip; for(var i:int = obsticles.length-1; i>=0; i--) { tempObs = obsticles[i]; tempObs.y = tempObs.y - playerSpeed;
function moveObsticle():void
{
//move
var tempObs:MovieClip;
for(var i:int = obsticles.length-1; i>=0; i--)
{
tempObs = obsticles[i];
tempObs.y = tempObs.y - playerSpeed;
}
//test if obsticle is off-stage and set it to remove
if (tempObs != null && tempObs.y < stage.stageHeight)
{
removeObsticle(i);
}
//player-obsticle colision
if (tempObs != null && tempObs.hitTestObject(player))
{
gameState = STATE_END;
}
}
函数moveObsticle():void
{
//移动
var tempObs:MovieClip;
对于(变量i:int=obsticles.length-1;i>=0;i--)
{
tempObs=obsticles[i];
tempObs.y=tempObs.y-玩家速度;
}
//测试障碍物是否在舞台外,并将其设置为移除
if(tempObs!=null&&tempObs.y
这是我代码中的moveX函数之一,它们都有相同的问题。
因此,这个函数在程序(游戏)开始时可以完美地工作,但是在玩游戏30秒或一分钟后,hitTestObject()停止工作,我的游戏只是释放了所有的游戏元素
因此,所讨论的代码是函数末尾的if语句,但我怀疑mby for循环也可能是一个问题,但是hitTest语句上方的if语句(test if obs off stage…)工作正常
这个错误快把我逼疯了,我用这个错误开发了一个完整的游戏,现在是时候摆脱它了,我找不到任何人有同样的问题,我以前从未有过这个问题
Android的代码是在空中运行的,整个程序是在Adobe Flash Pro cs6中开发的,请尝试将此代码更改为以下内容:
function moveObsticle():void
{
//move
var tempObs:MovieClip;
for(var i:int = obsticles.length-1; i>=0; i--)
{
tempObs = obsticles[i];
tempObs.y = tempObs.y - playerSpeed;
//test if obsticle is off-stage and set it to remove
if (tempObs != null && tempObs.y < stage.stageHeight)
{
removeObsticle(i);
continue;
}
//player-obsticle colision
if (tempObs != null && tempObs.hitTestObject(player))
{
gameState = STATE_END;
}
}
}
函数moveObsticle():void
{
//移动
var tempObs:MovieClip;
对于(变量i:int=obsticles.length-1;i>=0;i--)
{
tempObs=obsticles[i];
tempObs.y=tempObs.y-玩家速度;
//测试障碍物是否在舞台外,并将其设置为移除
if(tempObs!=null&&tempObs.y
通过将代码更改为以下内容解决了问题(想法来自@jfgi):
函数moveObsticle():void
{
//移动
var tempObs:MovieClip;
对于(变量i:int=obsticles.length-1;i>=0;i--)
{
tempObs=obsticles[i];
tempObs.y=tempObs.y-玩家速度;
//运动员障碍性结肠炎
if(tempObs!=null&&tempObs.hitTestObject(播放器))
{
游戏状态=状态\结束;
}
}
//测试障碍物是否在舞台外,并将其设置为移除
if(tempObs!=null&&tempObs.y
谢谢@jfgi 感谢您的帮助,您的代码实际上不起作用,对象将不再显示在屏幕上(猜测它们将被if语句删除),因此我在for循环中包括了hitTestObject,但排除了staheHeight if语句,并将其保留在原来的位置,从而解决了问题。谢谢您可以通过确保选择正确的答案来感谢jfgi。
function moveObsticle():void
{
//move
var tempObs:MovieClip;
for(var i:int = obsticles.length-1; i>=0; i--)
{
tempObs = obsticles[i];
tempObs.y = tempObs.y - playerSpeed;
//player-obsticle colision
if (tempObs != null && tempObs.hitTestObject(player))
{
gameState = STATE_END;
}
}
//test if obsticle is off-stage and set it to remove
if (tempObs != null && tempObs.y < stage.stageHeight)
{
removeObsticle(i);
}
}