Flex最底層的Application是一個Singleton Class
因此在app的任一個子物件中,用Application.application就可以access到最底層的屬性和物件了。換句話說,最底層的(public的)屬性和物件都是全域的,用一個最簡單的範例做demo。
主程式裡面有一個數字,可以按主程式的按鈕去累加。
main.mxml
另外做一個組件,在組件內部可以直接access到主程式裡面那個累加的數字
comp/TestApplicationSingleton.mxml
主程式裡面有一個數字,可以按主程式的按鈕去累加。
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>
留言
張貼留言