2013-06-29 54 views
0

所以Ive得到這個代碼:AS3 VAR不聽x--

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定義爲一個數字等等。但它保持不變一樣。 我也檢查了200實際上是一個數字不是一個字符串(如果var是int它不能保存一個字符串,對吧?)通過做trace(temBoostN - 1);並且工作。

碼說明: 函數處理playerSpeed,首先它通常的行爲(增加速度和東西)。 之後(我遇到問題的部分)會檢查是否激活了加速,並且在加速停用時,它會將速度降低到正常速度。 var j持有playerSpeed而沒有任何提升,用於檢查提升是否用完。

所有在代碼中的var定義和正常工作。

回答

0

我想你真正想要做的是得到體現在提升[I]遞減。什麼是'提升[i]'的類型。我相信這是int,這就是爲什麼改變tempBoostN不改變增強[我]。有2種方式圍繞它:

(1)你把Number升壓[I],所以tempBoostN =升壓[i]是一個按引用賦值,作爲對一個值副本的int

情況正在做(2)在循環結束時重新分配boost [i] = tempBoostN。

+0

謝謝,我做了tempBoostN一個數字而不是整數,重新分配數組,現在它的工作。再次感謝! – Dominiko

+0

順便說一句,你不需要改變類型,如果你重新分配......如果你同時使boost [i]和tempBoostN成爲一個數字,那麼就不需要重新分配。 – catholicon