Apache flex AdobeFlex静态函数引用控件

Apache flex AdobeFlex静态函数引用控件,apache-flex,static,adobe,public,viewstack,Apache Flex,Static,Adobe,Public,Viewstack,是否可以从静态函数引用应用程序中的控件 我拥有的是一个Viewstack,其中包含存储在单独控件中的VBox。例: <mx:ViewStack id="content" width="100%" height="100%" resizeToContent="true"> <controls:Login/> <controls:Dash/> <controls:Input/> <co

是否可以从静态函数引用应用程序中的控件

我拥有的是一个Viewstack,其中包含存储在单独控件中的VBox。例:

<mx:ViewStack id="content" width="100%" height="100%" resizeToContent="true">
    <controls:Login/>
    <controls:Dash/>            
    <controls:Input/>   
    <controls:Review/>
    <controls:Search/>  
</mx:ViewStack>     

登录到登录控件后,我想更改ViewStack的选定索引。从外部控件中,我无法按名称引用ViewStack。我可以从外部控件引用公共静态函数,但不能从该函数中引用ViewStack。非常感谢您的帮助


JH

您可以从FlexGlobals.topLevelApplication开始访问它(如果从那里可以看到)。尽管如此,这种东西的设计可能是有问题的

是否可以从静态引用应用程序中的控件 功能

通常不会。类本身上存在静态函数(或属性)。而MXML子级(如视图堆栈中的子级)存在于类的特定实例上。类级函数对类的任何特定实例一无所知,并且无法访问特定实例上的属性

但是,您可以将类的实例传递到静态函数中,并以这种方式访问属性。大概是这样的:

public static function doStuff(myViewStack:ViewStack):void{
 trace(myViewStack.id)
 // do other stuff
}
MyClass.doStuff(content)
这样称呼它:

public static function doStuff(myViewStack:ViewStack):void{
 trace(myViewStack.id)
 // do other stuff
}
MyClass.doStuff(content)
通常,您可以使用一个singleton类来保存 主应用程序的实例,并且如果查看堆栈 在主应用程序中,您可以执行以下操作


为什么不能按名称引用ViewStack?你的ViewStack在哪里?你能把你测试过的静态函数的代码贴出来吗?这样我们就能理解你的问题了?FlexGlobals对我来说非常有效。我可以将此代码放在我的公共类中,并从所有控件引用它。非常感谢你的帮助!Eduardo/rajesh.adhi,我会投票支持你的两个回答,但我没有足够的可信度:-无论如何谢谢你的帮助。