Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 as3 hitTestObject在一段时间后不工作_Actionscript 3_Flash_Flash Cs6_Hittest - Fatal编程技术网

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);
        }
    }