Flex最底層的Application是一個Singleton Class

因此在app的任一個子物件中,用Application.application就可以access到最底層的屬性和物件了。換句話說,最底層的(public的)屬性和物件都是全域的,用一個最簡單的範例做demo。


主程式裡面有一個數字,可以按主程式的按鈕去累加。

main.mxml
<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical" xmlns:comp="comp.*">

<mx:Script>

<![CDATA[

[Bindable] public var counter:int = 0;

]]>

</mx:Script>


<mx:Label text="'counter' property in flex app root:" />

<mx:Label text="{counter}" />

<mx:HBox>

<mx:Label text="access 'counter' from root:" />

<mx:Button mouseDown="counter++;" label="plus"/>

</mx:HBox>


<comp:TestApplicationSingleton/>


</mx:Application>


另外做一個組件,在組件內部可以直接access到主程式裡面那個累加的數字

comp/TestApplicationSingleton.mxml
<?xml version="1.0" encoding="utf-8"?>

<mx:Panel xmlns:mx="http://www.adobe.com/2006/mxml"

title="this a component" horizontalAlign="center">

<mx:Script>

<![CDATA[

import mx.core.Application;

]]>

</mx:Script>

<mx:Label text="access root property 'counter' from component:" />

<mx:Button label="plus"
click="Application.application.counter++;"/>

</mx:Panel>

留言

這個網誌中的熱門文章

3dmax的biped如何使用CMU的免費motion capture資源

如何在AS3 project中使用Flex的mx.utils類別庫?

如何把3dmax的physique轉成skin