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 のままです。

変数を数値などとして定義しようとしましたが、同じままです。また、200が実際には文字列ではなく数値であることを確認しました(varがintの場合、文字列を保持できませんよね?)実行してtrace(temBoostN - 1);、それが機能しました。

コードの説明: 関数は playerSpeed を処理し、最初に通常の動作 (速度の増加など) を行います。その後(問題が発生した部分)、速度ブーストがアクティブになっていることを確認し、ブーストが非アクティブになると、速度が通常の速度に戻ります。var j は、ブーストなしで playerSpeed を保持し、ブーストがなくなったかどうかを確認するために使用されます。

コード内のすべての変数が定義され、適切に機能しています。

4

1 に答える 1

0

あなたが実際にやりたいことは、減分をブースト[i]に反映させることだと思います。「boost[i]」のタイプは何ですか。inttempBoostN を変更してもブースト [i] が変更されないのはそのためだと思います。それを回避する方法は 2 つあります。

(1) Numberboost[i] を入れたので、tempBoostN = boost[i] は参照による代入であり、値のコピーは次の場合に行われます。int

(2) ループの最後で boost[i] = tempBoostN を再割り当てします。

于 2013-06-29T12:58:26.710 に答える