1

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

我拥有的是一个 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

4

3 回答 3

0

您可以从 FlexGlobals.topLevelApplication 开始访问它(如果从那里可见)。虽然,这种东西的设计可能是有问题的。

于 2012-02-28T23:35:16.400 回答
0

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

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

但是,您可以将类的实例传递给静态函数并以这种方式访问​​属性。像这样的东西:

public static function doStuff(myViewStack:ViewStack):void{
 trace(myViewStack.id)
 // do other stuff
}

并这样称呼它:

MyClass.doStuff(content)
于 2012-02-29T03:00:03.593 回答
0

通常你可以有一个单例类,你可以在其中保存主应用程序的实例,如果你查看堆栈驻留在你的主应用程序中,那么你可以做这样的事情

public static function changeIndex(index:int):void
{
    FlexGlobals.topLevelApplication.content.selectedIndex = index;
    //urappinstance.content.selectedIndex = index;
}
于 2012-02-29T03:29:26.963 回答