當在專案中,運用的自訂元件越來越多層時,為了頁面的切換和導覽,有時候會需要存取上層,或同層之間的變數或物件,這個時候,Flex 的 Actionscript 3.0 提供了parentApplication作為一個解決方案。野部用一個通俗的概念來描述,parentApplication 可以視同為 flash 開發環境下的 _root,但是限制比較多,可以有下面幾種運用方式:
- parentApplication.componentID.objectID.property
- parentApplication.objectID. property
- parentApplication.varableName
但是當遇到兩層元件以上的時候,用下列語法會造成執行錯誤:
componentID.componetID.objectID.property
此外,parentApplication還有幾個需要注意的事項:
- 一定是從最上層也就是 <mx:Application> 那一層開始算起
- 引入自訂元件一定要下 ID,如 <local:myComp id="myComp">,這點有時候會被忽略。
- 如上所述,元件只能一層。
- parentApplication 之後的語法,Flex Builder 不會即時除錯,必須等到在瀏覽器中執行時才知道錯誤與否,因為超過運算範圍。
可是有時候為了導覽,不得不跨層存取,限制那麼多,又不能即時除錯,那該怎麼辦呢?
其實解決方法很簡單,就是在最上層,也就是<mx:Application>層,宣告一個 public 變數。之後任何一層,需要存取或者判斷時,直接用parentApplication.varableName 的方式來達成就行了。
P.S. 上述的componentID, objected, property, varableName 請代換成您自己的語法就行了。
野部
Place your comment