所以我得到了这个代码:
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,用于检查提升是否用完。
代码中的所有变量都已定义并正常工作。