0

所以我得到了这个代码:

function speedUp():void
    {
        trace ("speed", playerSpeed);
        //checks if any boosts are on
        if (boostCheck == false) {j = playerSpeed}
        //making speed limit
        if (playerSpeed < speedLimit)
        {
            playerSpeed ++;
        }

        //increasing speed limit
        if (speedLimitInc == 100)
        {
            speedLimit++;
            speedLimitInc = 1;
        }
        trace ("______________j", j);
        speedLimitInc ++;
        if (boostCheck == true)
        {
            for (var i:int = boost.length-1; i>=0; i--)
            {
                var tempBoostN:int = boost[i];
                trace ("__________tempBoostN", tempBoostN);
                if (tempBoostN >= 0)
                {boostCheck = true; colBoolean = false; tempBoostN--;}
                else 
                {
                    boostCheck = false;
                    player.y = player.height + 30;
                    colBoolean = true;
                }
                if (playerSpeed >= j)
                {
                    if (tempBoostN >= 150)
                    {
                        playerSpeed = playerSpeed -1;

                    } else if (tempBoostN <= 150 && tempBoostN >= 30) {
                        playerSpeed = playerSpeed - 2;
                    }
                    tempBoostN--;
                }
            }
        }
         }

我遇到了tempBoostN变量问题,更重要的是,它不听命令。例如,当 var 为 200(它定义为 int)并且我确实tempBoostN--像您在代码中看到的那样,它只是保持 200。

我曾尝试将 var 定义为 Number 等。但它保持不变。我还检查了 200 实际上是一个数字而不是一个字符串(如果 var 是 int 则它不能保存一个字符串,对吗?),trace(temBoostN - 1);并且这样做有效。

代码说明:函数处理 playerSpeed,首先它执行通常的行为(增加速度和东西)。之后(我遇到问题的部分)检查是否激活了速度提升,并在停用提升时将速度降低到正常速度。var j 保存没有任何提升的 playerSpeed,用于检查提升是否用完。

代码中的所有变量都已定义并正常工作。

4

1 回答 1

0

我认为你真正想要做的是让减量反映在 boost[i] 中。'boost[i]' 的类型是什么。我相信它是int,这就是为什么改变 tempBoostN 不会改变 boost[i]。有两种解决方法:

(1) 你Number输入了 boost[i],所以 tempBoostN = boost[i] 是一个引用赋值,而不是一个值复制,以防万一int

(2) 在循环结束时重新分配 boost[i] = tempBoostN。

于 2013-06-29T12:58:26.710 回答