adobe flex静态函数参考控制

时间:2012-02-28 23:02:43

标签: flex static adobe public viewstack

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

我所拥有的是包含存储在单独控件中的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

3 个答案:

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