我在一個網站中有一個MXML組件,我在幾個不同的屏幕上重複使用它。 根據用戶點擊的內容,組件初始化一些值並開始播放媒體。我可以使我的MXML組件成爲一個Singleton嗎?
現在,如果我點擊網站,並在屏幕1中播放媒體,組件將初始化並播放媒體。
如果我然後轉到屏幕2並播放媒體,組件將初始化兩次。一次爲屏幕一次,一次爲屏幕2.
當我然後去屏幕三,它將開始初始化三次..所以它是爲每個屏幕創建一個MXML組件的新實例!
如何確保MXML組件僅初始化我需要它初始化的屏幕?
我真正想要的是該組件在整個應用程序中始終只有一個實例。是否有可能將該MXML組件轉換爲單例文件,以便我的應用程序中始終擁有該MXML的一個實例?
該組件在視圖堆棧中的多個位置以及Canvas的不同狀態的較高級別中使用。 在我的模型中,我有一個保存當前應用程序狀態的值。當用戶導航時,應用程序狀態得到更新。 應用程序狀態值綁定到此mediaplayer,這是我正在討論的MXML組件。只要應用程序狀態變爲需要播放媒體的應用程序狀態,媒體播放器就會初始化。 如果您在此基礎上有更多的建議,請發佈;) 我將開始使用您迄今給我的內容。 謝謝! – Bocaxica 2009-12-16 18:09:49
好吧,我想我現在可以按照你上面所說的來工作了。確實,一些智能重新設計的組件工作。 你是對的,的確我需要組件的更多實例,但通過構建組件的更明智的初始化,我可以使這項工作:) 感謝您的幫助! – Bocaxica 2009-12-16 18:28:56
嗯。這聽起來有點棘手。我認爲你需要做的是重新組裝你的視頻組件 - 在舊父組件上調用removeChild(),然後在新組件上添加addChild()。你當然可以在單例上下文中設置它,以便組件本身處理它的重新映射 - 如下所示: public static getAndAddInstance(newParent:Container):void {(!_ instance){_instance = new thisThing(); } if(_instance.containerParent){ _instance.containerParent.removeChild(_instance); } newParent.addChild(_instance); } 類似的東西。 – 2009-12-18 23:38:16