1

静的関数からアプリケーション内のコントロールを参照することはできますか?

私が持っているのは、別のコントロールに格納された VBoxes を含む 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 を名前で参照できません。外部コントロールから public static 関数を参照できますが、その関数内から ViewStack を参照することはできません。どんな助けでも大歓迎です。

JH

4

3 に答える 3

0

FlexGlobals.topLevelApplication からアクセスできます (そこから見える場合)。ただし、そのようなものの設計には疑問があるかもしれません。

于 2012-02-28T23:35:16.400 に答える
0

静的関数からアプリケーション内のコントロールを参照することはできますか?

一般的にいいえ。クラス自体に静的関数 (またはプロパティ) が存在します。一方、MXML 子 (ビュー スタックなど) は、クラスの特定のインスタンスに存在します。クラス レベルの関数は、クラスの特定のインスタンスについて何も認識せず、特定のインスタンスのプロパティにアクセスできません。

ただし、クラスのインスタンスを静的関数に渡して、その方法でプロパティにアクセスできます。このようなもの:

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 に答える