だから私はこのコードを手に入れました:
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 のままです。
変数を数値などとして定義しようとしましたが、同じままです。また、200が実際には文字列ではなく数値であることを確認しました(varがintの場合、文字列を保持できませんよね?)実行してtrace(temBoostN - 1);
、それが機能しました。
コードの説明: 関数は playerSpeed を処理し、最初に通常の動作 (速度の増加など) を行います。その後(問題が発生した部分)、速度ブーストがアクティブになっていることを確認し、ブーストが非アクティブになると、速度が通常の速度に戻ります。var j は、ブーストなしで playerSpeed を保持し、ブーストがなくなったかどうかを確認するために使用されます。
コード内のすべての変数が定義され、適切に機能しています。