2013-01-20 143 views
-1

我是新來的閃光燈,我正在用鼠標控制遊戲。但我得到這個錯誤:錯誤1170:函數不返回av值

錯誤1170:函數不會返回一個值。

我想寫一個消氣劑bulletType返回main.as

public function get(_bulletT:String):String 
{ 
    for (var i = 0; i < _bulletT.length; i++) 
    { 
     if (_bulletT.charAt(i) == "star") 
     { 
      return "star"; 
      "star"; 
     } 
     else 
     { 
      return "circle"; 
      "circle"; 
     } 
    } 

是它要求什麼樣的價值?

+0

請嘗試正確解釋您要達到的目標,使用標籤突出顯示代碼並正確格式化。我對這個錯誤的猜測是,如果_bulleT.length <= 0,那麼你的返回語句可能無法訪問。命名一個函數get(...)是一個不好的習慣,除非你想要它成爲一個getter,在這種情況下,它應該是'get bulletType():String' –

回答

0

在您的場景中,當_bulletT的長度爲零時 - 它根本不會輸入for塊,並且根據您提供的代碼是唯一的地方你有return陳述。

也許嘗試在for塊之後添加另一個return語句?或者如果長度爲零,則在for之前拋出一個錯誤?

1

我建議你在未來格式化你的代碼。另外,最好不要將代碼寫入一行,因爲它不會帶來額外的好處。您的代碼將被編譯爲Flash Player將執行的對象代碼。

無論如何,你的函數有一些錯誤。錯誤的第一個來源是你將返回值放在if/else塊中。函數體本身不指定返回。這裏是你的代碼應該看起來如何:

 public function get(_bulletT:String):String { 
      for (var i:int = 0; i < _bulletT.length; i++) { 
       if (_bulletT.charAt(i) == "star") { 
        return "star"; 
       } 
      } 
      return "circle"; 
     } 

注意,如果條件滿足,你只想返回「星號」。一旦你返回一個值,循環將會終止,函數將退出。另一種情況是,如果在循環中不滿足條件,則函數應該返回圓。但是,這個功能沒有意義。我相信你正在測試一個字符串是否包含單詞「star」,對嗎?如果是這樣,那麼你可以這樣做:

 public function get(_bulletT:String):String { 
      if (_bulletT.indexOf("star") != -1) { 
       return "star"; 
      } 
      return "circle"; 
     } 

但是,我不認爲這是你真正想要的。您可能要確定是否保留價值星。所以,如果是這樣的話,那麼你可以做:

public function get(_bulletT:String):String { 
     if (_bulletT == "star") { 
      return "star"; 
     } 
     return "circle"; 
    } 

你正在使用類和創建類的getter/setter屬性命名時功能得到,這是ActionScript中的保留字。無論如何,我希望這是有幫助的。