答案 0 :(得分:1)
静态方法只能调用另一个静态方法。 numChildren和getChildAt不是静态方法,从静态方法中调用它们只能产生错误。即使你的类正在扩展DisplayObjectContainer,它仍然会得到那些错误,因为该类的实例将具有getChildAt方法和numChildren属性,但在静态级别,那些仍然不存在并且仍然会产生错误。
不要使您的applicaFiltriLingua方法静态并扩展有效的DisplayObjectContainer
答案 1 :(得分:1)
由于您的函数是STATIC,因此您无法实例化一个,并且不允许所有类型的非静态字段。也不允许实例构造函数,并且类自动被密封。
使方法非静态并实例化类" gestioneMultilingua"
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);
希望可以提供帮助。