2011-08-01 59 views
1

我編寫了一個單例類來跟蹤我的應用程序中的一些變量。通過靜態類型的引用調用可能未定義的方法類

我收到了一個我找不到的語法錯誤,我確定我錯過了一些簡單的東西,但它是那些日子之一。任何人都看到我的代碼有問題嗎?

錯誤是1061:通過靜態類型Class的引用調用可能未定義的方法setResult。

我在我的單例類功能

public function setResult(resultNumber:int, value:int): void 
    { 
     switch(resultNumber) 
     { 
      case 2: { this.result2 = value; break; } 
      case 3: { this.result3 = value; break; } 
      case 4: { this.result4 = value; break; } 
      case 5: { this.result5 = value; break; } 
      case 6: { this.result6 = value; break; } 
      case 7: { this.result7 = value; break; } 
      case 8: { this.result8 = value; break; } 
      case 9: { this.result9 = value; break; } 
      case 10: { this.result10 = value; break; } 
      case 11: { this.result11 = value; break; } 
      case 12: { this.result12 = value; break; } 
      case 13: { this.result13 = value; break; } 
      case 14: { this.result14 = value; break; } 
     } 
    } 

在我的MXML頁我的函數調用

  if(chkBox1.selected == true) 
      { 
       utils.Calculation.setResult(2,1); 
      } 

在此先感謝您的幫助!

回答

3

假設你單身是計算類,你缺少你的getInstance電話嗎?

utils.Calculation.getInstance().setResult(2, 1); 

一個很好的動作Singleton模式:

package com.stackOverflow 
{ 
    public class MySingleton 
    { 
     public function MySingleton(lock:Class) 
     { 
      if(lock != SingletonLock) 
       throw new Error("This class cannot be instantiated, it is a singleton!"); 
     } 
     private static var mySingleton:MySingleton; 

     public static function getInstance():MySingleton{ 
      if(mySingleton==null) 
       mySingleton = new MySingleton(SingletonLock); 
      return mySingleton; 
     } 
     public function setResult(resultNumber:int, value:int): void{ 
     //... 
     } 
    } 
} 
class SingletonLock{} 

編輯:的getInstance()用於計算類的例子:

private static var calculation:Calculation; 
public static function getInstance():Calculation{ 
    if(calculation==null) 
     calculation = new Calculation(SingletonLock); 
    return calculation; 
} 
+0

在錯誤1046中使用您的方法:找不到類型或不是編譯時常量:getInstance()函數聲明行中的計算 – korymiller

+0

在計算中重命名MySingleton。這只是一個例子。 –

+0

公共靜態函數的getInstance():計算{ \t \t \t如果(計算== NULL) \t \t \t \t計算新=計算(); \t \t \t return計算; \t \t} – korymiller

3

試試這個:

public static function setResult(...) 
+0

如果我使用靜態的話,我不能使用此。關鍵字來訪問我的變量 – korymiller

+0

OP,如果您將其設置爲靜態,則還需要刪除函數中對this的引用。 –

相關問題