通过静态类型Class的引用调用可能未定义的方法

时间:2011-08-01 20:25:13

标签: flex actionscript-3

我写了一个单例类来跟踪我的应用程序中的一些变量。

我收到一个我无法弄清楚的语法错误,我确信我错过了一些简单但却是其中一天的错误。有人看到我的代码出了问题吗?

错误是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);
            }

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

试试这个:

public static function setResult(...) 

答案 1 :(得分:3)

假设您是singleton是Calculation类,您是否错过了getInstance调用?

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

一个好的动作单身模式:

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;
}