是否可以从静态函数引用应用程序中的控件?
我所拥有的是包含存储在单独控件中的VBox的Viewstack。例如:
<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
答案 0 :(得分:0)
您可以从FlexGlobals.topLevelApplication(如果从那里可见)开始到达它。虽然,这样的设计可能会有问题。
答案 1 :(得分:0)
是否可以从静态引用应用程序中的控件 功能
一般没有。类本身存在静态函数(或属性)。而MXML Children(例如视图堆栈)存在于类的特定实例上。类级别函数对类的任何特定实例一无所知,并且无法访问特定实例上的属性。
但是,您可以将类的实例传递给静态函数并以这种方式访问属性。像这样的东西:
public static function doStuff(myViewStack:ViewStack):void{
trace(myViewStack.id)
// do other stuff
}
并称之为:
MyClass.doStuff(content)
答案 2 :(得分:0)
通常你可以有一个单例类,你可以保存 主应用程序的实例,如果您查看堆栈是驻留的 在你的主应用程序中,你可以做这样的事情
public static function changeIndex(index:int):void
{
FlexGlobals.topLevelApplication.content.selectedIndex = index;
//urappinstance.content.selectedIndex = index;
}