AS3类:访问未定义的方法/属性错误

时间:2015-12-07 13:08:49

标签: actionscript-3 flash

我有这堂课:

<input type="hidden" name="email_confirmation" value="">

但我收到了这些错误:

我该如何解决?也许我需要导入一个包?

3 个答案:

答案 0 :(得分:1)

静态方法只能调用另一个静态方法。 numChildren和getChildAt不是静态方法,从静态方法中调用它们只能产生错误。即使你的类正在扩展DisplayObjectContainer,它仍然会得到那些错误,因为该类的实例将具有getChildAt方法和numChildren属性,但在静态级别,那些仍然不存在并且仍然会产生错误。

不要使您的applicaFiltriLingua方法静态并扩展有效的DisplayObjectContainer

答案 1 :(得分:1)

由于您的函数是STATIC,因此您无法实例化一个,并且不允许所有类型的非静态字段。也不允许实例构造函数,并且类自动被密封。

使方法非静态并实例化类&#34; gestioneMultilingua&#34;

var multilingua:gestioneMultilingua = new gestioneMultilingua();

比你可以像访问multilingua.applicaFiltriLingua(//引用阶段)那样访问它 和 做

public function applicaFiltriLingua(stage_ref:MovieClip):void
{
    var dati:SharedObject = SharedObject.getLocal("datiApp", "/");
    var lingua : String = dati.data.lingua;

    for(var i:int = 0; i<numChildren; i++){
        var e:Object = stage_ref.getChildAt(i);
        if(e.name.indexOf("$"+lingua) >= 0){
            e.visible = true;
        }
        else if(e.name.indexOf("$")  >= 0){
            e.visible = false;
        }
    }
}

答案 2 :(得分:1)

当你正确使用它时,你可以毫无问题地使用静态函数,这里的问题不是函数是静态的(并且在该静态函数中没有使用numChildren或调用getChildAt() )但它是关于你如何做到这一切的。

在您的情况下,您希望与DisplayObjectContainer个孩子一起工作,因此您只需将该对象传递给applicaFiltriLingua()这样的功能:

public static function applicaFiltriLingua(container:DisplayObjectContainer):void 
{
    var dati:SharedObject = SharedObject.getLocal("datiApp","/");
    var lingua:String = dati.data.lingua;

    for (var i:int = 0; i < container.numChildren; i++) 
    {
        var e:DisplayObject = container.getChildAt(i);
        if (e.name.indexOf("$" + lingua) >= 0) {
            e.visible = true;
        } else if (e.name.indexOf("$")  >= 0) {
            e.visible = false;
        }
    }
}

然后您可以毫无问题地调用您的函数,例如:

import gestioneMultilingua;

gestioneMultilingua.applicaFiltriLingua(this);

希望可以提供帮助。