2012-02-28 82 views
1

是否可以從靜態函數引用應用程序中的控件?adobe flex靜態函數參考控件

我所擁有的是一個包含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。我可以從外部控件引用公共靜態函數,但是我無法從該函數中引用ViewStack。任何幫助是極大的讚賞。

JH

+0

爲什麼你不能通過名字引用你的ViewStack?你在哪裏關於你的ViewStack? – 2012-02-28 23:05:26

+0

你可以發佈你測試過的靜態函數的代碼,但不工作,以便我們理解你的問題? – sch 2012-02-28 23:13:10

回答

0

通常情況下,你可以有一個單獨的類,你可以保存在主應用程序的 實例,如果查看堆棧位於 主應用程序裏面,那麼你可以做一些這樣的事

public static function changeIndex(index:int):void 
{ 
    FlexGlobals.topLevelApplication.content.selectedIndex = index; 
    //urappinstance.content.selectedIndex = index; 
} 
+0

FlexGlobals對我來說非常完美。我能夠將此代碼放置在公共類中,並從我的所有控件中引用它。非常感謝你的幫助! – jay 2012-02-29 13:27:55

0

你能達到它FlexGlobals.topLevelApplication開始(如果它是可見的從那裏)。雖然,這樣的事情的設計可能是有問題的。

+0

Eduardo/rajesh.adhi,我會爲你的迴應投票,但我沒有足夠的信譽。 :-P。無論如何,感謝您的幫助。 – jay 2012-02-29 13:30:10

0

是否可以從靜態的 函數中引用應用程序中的控件?

一般沒有。類本身存在一個靜態函數(或屬性)。而MXML兒童 - 例如在視圖堆棧中 - 存在於該類的特定實例上。一個類級別的函數將不知道該類的任何特定實例,並且將無法訪問特定實例上的屬性。

但是,您可以將某個類的實例傳遞給靜態函數,並以此方式訪問屬性。是這樣的:

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

,並調用它是這樣的:

MyClass.doStuff(content)