锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 涓婅堪3縐嶆柟娉曟槸Adobe瀹樻柟鏂囨。鎻愪緵鐨勩備絾鏄繖3縐嶆柟娉曚笉鑳借В鍐砎iewStack瀛愮粍浠跺ぇ灝忎笉涓鑷達紝ViewStack涓嶈兘鑷姩璋冩暣鐨勯棶棰樸?br>鎴戞渶鍚庢槸浣跨敤ActionScript鍔ㄦ佽В鍐崇殑銆?br>鍦ㄦ洿鎹iewStack鐨刟ctive child涔嬮棿錛岄鍏堣緗畍iewStack鐨勫ぇ灝忋?/p>
<mx:ViewStack id="appStack"> public function changeChild() : void {
<mx:VBox id="v1"/>
<mx:VBox id="v2"/>
</mx:ViewStack>
appStack.width = 200;
appStack.height = 200;
appStack.selectChild = v1;
}
鎴戦敊浜嗭紝浣跨敤ViewStack鐨剅esizeToContent鏄渶濂界殑瑙e喅鍔炴硶銆?/p>
<?xml version="1.0"?>
<!-- modules/URLModuleLoaderApp.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" viewSourceURL="srcview/index.html">
<mx:Panel
title="Module Example"
height="90%"
width="90%"
paddingTop="10"
paddingLeft="10"
paddingRight="10"
paddingBottom="10"
>
<mx:Label width="100%" color="blue"
text="Select the tabs to change the panel."/>
<mx:TabNavigator id="tn"
width="100%"
height="100%"
creationPolicy="auto"
>
<mx:VBox id="vb1" label="Column Chart Module">
<mx:Label id="l1" text="ColumnChartModule.swf"/>
<mx:ModuleLoader url="ColumnChartModule.swf"/>
</mx:VBox>
<mx:VBox id="vb2" label="Pie Chart Module">
<mx:Label id="l2" text="piehchartmodule.swf"/>
<mx:ModuleLoader url="piechartmodule.swf"/>
</mx:VBox>
<mx:VBox id="vb3" label="Line Chart Module">
<mx:Label id="l3" text="linehchartmodule.swf"/>
<mx:ModuleLoader url="linechartmodule.swf"/>
</mx:VBox>
</mx:TabNavigator>
</mx:Panel>
</mx:Application>
鍦ㄨ繖涓簲鐢ㄤ腑涓昏鏄竴涓猅agNavigator, 閲岄潰鏈変笁涓爣絳鵑〉. 姣忎釜鏍囩欏靛姞杞戒竴涓ā鍧?
涓嬮潰鏄叾涓竴涓ā鍧楃殑浠g爜:
<?xml version="1.0"?>
<!--ColumnChartModule.mxml -->
<mx:Module xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" height="100%" >
<mx:Script><![CDATA[
import mx.collections.ArrayCollection;
[Bindable]
public var expenses:ArrayCollection = new ArrayCollection([
{Month:"Jan", Profit:2000, Expenses:1500},
{Month:"Feb", Profit:1000, Expenses:200},
{Month:"Mar", Profit:1500, Expenses:500}
]);
]]></mx:Script>
<mx:ColumnChart id="myChart" dataProvider="{expenses}">
<mx:horizontalAxis>
<mx:CategoryAxis
dataProvider="{expenses}"
categoryField="Month"
/>
</mx:horizontalAxis>
<mx:series>
<mx:ColumnSeries
xField="Month"
yField="Profit"
displayName="Profit"
/>
<mx:ColumnSeries
xField="Month"
yField="Expenses"
displayName="Expenses"
/>
</mx:series>
</mx:ColumnChart>
<mx:Legend dataProvider="{myChart}"/>
</mx:Module>
鏈鍚? 搴旂敤鍜屼笁涓ā鍧椾竴鍏變細鐢熸垚4涓猄WF. 涓鑸潵璇? 搴旂敤浣跨敤寤惰繜鍔犺澆絳栫暐. 涔熷氨鏄, 濡傛灉浣犳墦寮搴旂敤鍚? 浠庢潵閮戒笉浣跨敤鍏朵腑鐨勬煇涓ā鍧? 閭d釜榪欎釜妯″潡姘歌繙涓嶄細琚姞杞? 榪欐鍋氱殑濂藉鏄? 鍔犲揩浜嗙涓嬈℃墦寮搴旂敤鐨勯熷害, 浣嗛殢涔嬭屾潵鐨勭己鐐瑰氨鏄? 絎竴嬈℃墦寮浣跨敤鏌愪釜鍔熻兘, 闇瑕佸姞杞芥ā鍧楁椂, 浼氶渶瑕佷竴鐐圭瓑寰呯殑鏃墮棿.
]]>
鏂扮壒鎬?br>1. 鏀寔AMF3, 榪欎竴鐐規棤鐤戞槸嬋鍔ㄤ漢蹇冪殑.
2. 鏀寔JSON, 闄や簡gateway.php澶? 澧炲姞浜唈son.php, 璁╀綘鐨勬湇鍔¤兘澶熶嬌鐢↗SON.
鏈変袱涓緥瀛?
http://5etdemi.com/amfphp2/samples/ajaxtables/
http://5etdemi.com/amfphp2/samples/spry/
3. 涓涓柊鐨剆ervice browser
4. 鍦╬hp绔? 涓嶅啀闇瑕佸啓 $this->methodTable 榪欎釜涓滀笢浜? 鍦╝mfphp 1.9 涓?鎵鏈夌殑鏂規硶榛樿涓哄彲浠ヨ繙紼嬭闂紝闄ら潪鏂規硶鍚嶆槸浠ヤ笅鍒掔嚎寮濮?鎴栬?鏂規硶鏄?private 鐨勶紙鍙湁 php5 鏀寔錛?銆?/p>
閫氬父, Application瀵硅薄鍒涘緩鏃? 鍙戠敓濡備笅浜嬩歡:
1. 瀹炰緥鍖朅pplication瀵硅薄
2. 鍒濆鍖朅pplication.systemManager
3. Application鍦ㄥ垵濮嬪寲榪囩▼涔嬪墠, 媧懼彂棰勫垵濮嬪寲浜嬩歡.
4. 璋冪敤createChild(). 姝ゆ椂, 鎵鏈夊簲鐢ㄧ粍浠惰鍒涘緩, 鎵鏈夌粍浠剁殑createChild()琚皟鐢?
5. Application媧懼彂鍒濆鍖栦簨浠? 琛ㄦ槑鎵鏈夌殑緇勪歡鍒濆鍖栧畬姣?
6. 媧懼彂creationComplete浜嬩歡
7. Application瀵硅薄娣誨姞鍒版樉紺哄垪琛ㄤ腑
8. 媧懼彂applicationComplete浜嬩歡
澶у鏁版儏鍐典笅, 鎴戜滑浣跨敤<mx:Application>鏉ュ垱寤篴pplication瀵硅薄, 浣嗗鏋滀嬌鐢ˋctionScript鏉ュ垱寤虹殑璇? 閭d箞寤鴻涓嶈鍦╝pplication鐨勬瀯閫犲嚱鏁頒腑鍒涘緩緇勪歡, 鎺ㄨ崘鍦╟rateChildren鍑芥暟涓? 涓昏鏄粠鎬ц兘鏂歸潰鑰冭檻.
Flash鍖呭惈鐨勬槸涓涓椂闂寸嚎涓婄殑澶氫釜甯? 鑰孎lex鐨凷WF鍙寘鍚?涓撫. SystemManager, Preloader, DownloadProgressBar鍜屽皯閲忓伐鍏風被閮藉湪絎竴甯? 鍓╀笅鐨勫寘鎷簲鐢ㄤ唬鐮? 鍐呭祵璧勬簮鍏ㄩ兘鍦ㄧ浜屽撫涓? 褰揊lash Player涓嬭澆涓嬭澆SWF鏃? 鍙鎺ユ敹鍒扮涓甯у唴瓚沖鐨勬暟鎹? 灝變細瀹炰緥鍖朣ystemManager, 鐢卞畠鏉ュ垱寤篜reloader, 鐒跺悗鍒涘緩DownloadProgressBar, 榪欎袱涓璞′細瀵熺湅鍓╀綑瀛楄妭鐨勪紶杈撹繃紼? 褰撶涓甯х殑鎵鏈夊瓧鑺備紶杈撳畬姣曞悗, SystemManager鍙戦乪nterFrame鍒扮浜屽撫, 鐒跺悗鏄叾浠栦簨浠? 鏈鍚嶢pplication瀵硅薄媧懼彂applicationComplete浜嬩歡.
搴旂敤涓富瑕佸寘鍚?涓粍浠? 涓涓猅extInput, 涓涓猅ree, 涓涓狣ataGrid, 涓涓狶abel
1. 鍏堢湅Tree, Tree浣跨敤_xmlData浣滀負鏁版嵁婧? 瀹氫箟涓涓猚hange浜嬩歡澶勭悊鍑芥暟, 灝嗗綋鍓嶈妭鐐瑰瓨鍌ㄥ埌_xmlCur鍙橀噺涓?
2. TextInput鐨勬暟鎹簮灝辨槸_xmlCur鐨刲abel灞炴? 涔熷氨鏄疶ree褰撳墠鑺傜偣鐨勬爣絳? 浠栦篃瀹氫箟浜嗕竴涓猚hange浜嬩歡澶勭悊鍑芥暟, 鍦═extInput涓殑鏂囨湰鏀瑰彉鏃? 灝嗘柊鐨勬枃鏈祴鍊肩粰Tree褰撳墠鑺傜偣鐨勬爣絳? 涔熷氨鏄敼鍙樺綋鍓峊ree鑺傜偣鐨勬爣絳懼? 鍊煎緱娉ㄦ剰鐨勬槸璧嬪煎茍涓嶆槸鐩存帴緇橳ree涓垨鑰呰妭鐐逛腑鐨勬煇涓睘鎬? 鑰屾槸閫氳繃淇敼鏁版嵁婧怷ml鐨勫兼潵鏀瑰彉鐨?
3. DataGrid鐨勪嬌鐢ㄦ樉紺轟簡濡備綍鍦―ataGrid涓睍紺篨ml鐨勬妧宸?
4. 鏈鍚庝竴涓狶abel鍙槸綆鍗曠殑鏄劇ず褰撳墠鑺傜偣鐨勬爣絳懼? 涓嶵extInput鐨勬枃鏈繚鎸佸悓姝?/p>
2. 澧炲姞Locale錛岄敊璇俊鎭殑鍥介檯鍖栫殑澶勭悊銆?br>娣誨姞浜嗕竴涓狿roperties鏂囦歡錛?br>娣誨姞浜哻om.adobe.cairngorm.CairngormMessageCodes鍜宑om.adobe.cairngorm.CairngormError涓や釜綾伙紝鍏朵腑CairngormMessageCodes鐢ㄤ簬瀹氫箟Properties鏂囦歡涓殑閿鹼紝鑰孋airngormError灝佽浜咵rror錛屽湪搴旂敤鎵ц鐨勮繃紼嬩笉鍐嶇洿鎺ユ姏鍑篍rror錛岃屾姏鍑轟竴涓狢airngormError錛屽叾涓甫涓涓弬鏁板氨鏄疢essageCode錛屾牴鎹甅essageCode鍒癙roperties鏂囦歡涓彇鍑虹浉搴旂殑娑堟伅銆?/p>
3. 鍦╞usiness涓紝娣誨姞浜嗕竴涓狪ServiceLocator鐨勬帴鍙?br>ServiceLocator瀹炵幇IServiceLocator鎺ュ彛錛岀浉姣斾互鍓嶅鍔犱簡浠ヤ笅鍑犱釜鏂規硶錛?br>a銆乸ublic function getRemoteObject( serviceId : String ) : RemoteObject // Return the RemoteObject for the given service id.
b銆乸ublic function getHTTPService( serviceId : String ) : HTTPService // Return the HTTPService for the given service id.
c銆乸ublic function getWebService( serviceId : String ) : WebService // Return the WebService for the given service id.
d銆乸ublic function getConsumer( serviceId : String ) : Consumer // Return the message Consumer for the given service id.
e銆乸ublic function getProducer( serviceId : String ) : Producer // Return the message Produce for the given service id.
f銆乸ublic function getDataService( serviceId : String ) : DataService // Return the DataService for the given service id.
g銆乸ublic function setCredentials( username : String, password : String ) : void // Set the credentials for all registered services. Note that services that use a proxy or a third-party adapter to a remote endpoint will
鍘熸潵鐨刧etService鍜実etInvokerService鏂規硶宸茬粡搴熷純錛屾敼涓轟簡getRemoteObject
4. 鍦–ommand涓紝澧炲姞浜咺Command鎺ュ彛錛屽師鏉ョ殑Command鎺ュ彛緇ф壙ICommand
5. 鍦╒O涓紝澧炲姞浜咺ValueObject鎺ュ彛錛屽師鏉ョ殑ValueObject緇ф壙IValueObject鎺ュ彛
涓婇潰娣誨姞鐨勫嚑涓帴鍙o紝闄や簡IServiceLocator鐩歌緝2.0鐗堟湰鏈変簡杈冨ぇ鐨勫彉鍖栵紝澧炲姞浜嗕竴浜涙柟娉曪紝鍏朵粬鐨勫嚑涓帴鍙o紝渚濇垜鎵瑙侊紝綰補鏄崲浜嗗悕瀛楄屽凡銆?/p>
Cairngen鏄竴涓狢aringorm鐨勪唬鐮佺敓鎴愬櫒, 瀹冧嬌寰楀紑鍙戣呭彲浠ュ緢鏂逛究鍦扮敓鎴怌airngorm欏圭洰鐨勭粨鏋勬鏋? 鍖呮嫭: Cairngorm欏圭洰鐨勭洰褰曠粨鏋? 涓涓己鐪佺殑ModelLocator, Controller, ServiceLocator. Cairngen涔熷彲浠ョ敓鎴怑vent, Command, Delegate綾?
Cairngen浣跨敤Flex2鍜孭HP5.2.0寮鍙? 鍒╃敤浜咥MFPHP. 瀹夎榪囩▼鍗佸垎鏂逛究. 浣犲彲浠ュ湪Flex Builder鐨勬祻瑙堝櫒涓洿鎺ヨ繍琛孋airngen鏉ュ揩閫熸柟渚垮湴鐢熸垚Cairngorm鐨勭被.
Cairngen浣跨敤'姝ラ(Sequence)'鏉ユ弿榪癊vent, Command, Delegate綾諱箣闂寸殑鍏崇郴.
鍦–airngen涓彧瑕佸懡鍚嶄竴涓?姝ラ',鐐瑰嚮涓涓嬬敓鎴愭寜閽氨鍙互鐢熸垚涓涓?姝ラ'. 鐒跺悗鍒鋒柊涓涓婩lex欏圭洰, 鐢熸垚鐨勭被灝監K浜? 鍦ㄤ竴浜涚壒孌婄殑鎯呭喌涓? 浣犱笉甯屾湜娣誨姞Delegate綾? 閭d箞浣犲彲浠ラ夋嫨鎺掗櫎Delegate綾葷殑鐢熸垚, 榪欐牱鐨勮瘽, Cairngen鍙敓鎴怑vent鍜孋ommand.
鐢熸垚鐨凜ommand綾誨疄鐜癈airngorm鐨凜ommand鎺ュ彛, 浣嗕笉瀹炵幇IResponder鎺ュ彛. Cairngen榪樿兘澶熸紜湴灝嗕簨浠跺己鍒舵ц漿鍖?casting)涓篊oand涓殑綾誨瀷, 騫秈mport鎵鏈夌浉鍏崇殑綾?
緋葷粺闇姹?
1. 浜嗚ВAMFPHP, Apache2.0.59鍜孭HP5.2.0, 鍦ㄤ嬌鐢–airngen涔嬪墠瑕佹眰鍏堝畨瑁匒MFPHP, 鑰屼笖gateway.php鐨勮闂櫄鎷熺洰褰曞簲璇ュ涓嬭緗? http://localhost/amfphp/gateway.php. 鍦?.0鐗堟寮忓彂甯冨悗, 榪欎釜URL鍙互鑷敱閰嶇疆.
2. 榪橀渶瑕佸畨瑁匜lex2, PHP, 浣犲彲浠ョ敤WAMP5鏉ラ泦鎴愬畨瑁匒pache5.5鍜孭HP. 瀹夎濂絇HP鍜孉MFPHP鍚? 灝卞彲浠ヨВ鍘嬬緝Cairngen Alpha 1. 鎶妔ervices鐩綍澶嶅埗鍒癮mfphp鐨勬牴鐩綍涓? 鐒跺悗澶嶅埗cairgen-ui鐩綍鍒癮pache鐨剋ww鏍圭洰褰曚笅.
浣跨敤:
瀹夎濂絇HP鍜孉MFPHP鍚? 灝卞彲浠ュ紑濮嬩嬌鐢–airngen浜? 鎵撳紑嫻忚鍣ㄨ緭鍏?a href="http://localhost/cairngen-ui/Cairngen.html">http://localhost/cairngen-ui/Cairngen.html鎵撳紑鐢熸垚鍣ㄧ殑鍥懼艦鐣岄潰. 鍒涘緩Cairgen欏圭洰:
鐐瑰嚮 begin
緇欎綘鐨凜airngen欏圭洰鍛藉悕. 榪欎釜鍚嶇О涓嶧lex欏圭洰鐨勫悕縐扮浉鍚? 閫夋嫨浣犵殑Cairngorm鐨勭増鏈? 閫夋嫨Flex欏圭洰鐨勮礬寰? 璁劇疆欏圭洰涓寘璺緞(姣斿: com.domain.projectname). 鏈鍚? 媯楠屼竴涓嬭緭鍏ュ唴瀹? 鐐瑰嚮"Create Project". 鍒鋒柊Flex欏圭洰鏌ョ湅緙虹渷鐨凜airngorm欏圭洰緇撴瀯, ModelLocator, Service鍜孋ontroller綾?
鍒涘緩"姝ラ":
棣栧厛鏄粰姝ラ鍛藉悕, 鐒跺悗閫夋嫨鏄惁瑕佺敓鎴怐elegate綾? 鐐瑰嚮鐢熸垚, 騫跺埛鏂癋lex欏圭洰. 鍙互鍙戠幇闇瑕佺殑綾誨凡緇忕敓鎴愬畬姣曚簡. 鐜板湪闇瑕佹妸瀹冧滑娣誨姞鍒癈ontroller涓?
鎺ヤ笅鏉ョ紪杈戞ā鏉挎枃浠? 浣犲彲浠ヤ慨鏀規ā鏉挎枃浠?.tpl)鏉ュ疄鐜頒綘鐨勭壒瀹氱殑Cairngorm闇姹? 妯℃澘鏂囦歡鍦?amfphp\services\com\ericfeminella\cairngen\templates鐩綍涓?
鐢熸垚鍣ㄤ笅杞藉湴鍧: http://code.ericfeminella.com/cairngen/Cairngen%20Alpha%201%20PreRelease.zip
鐜板湪鏈変竴涓柟渚跨殑鍋氭硶鏉ユ牴鎹夋嫨Enable/Disable鎺т歡銆傛瘮濡傦細鏈変竴涓狣ataGrid鍜屾暟涓搷浣滄暟鎹殑鎸夐挳錛屽綋閫変腑鏌愯鏄縺媧誨叾涓竴涓寜閽紝閫変腑鍙︿竴琛屾椂錛屾縺媧誨叾涓彟涓涓寜閽紝絳夌瓑銆?/p>
閫氬父鐨勫仛娉曟槸鍐欎竴澶у爢鐨刬f else璇彞錛屾垨鑰呮槸璁劇疆涓鍫嗗彉閲忕粦瀹氬埌鎸夐挳涓婏紝鐒跺悗鍦ㄤ唬鐮佷腑璁劇疆榪欎簺鍙橀噺鐨勫鹼紝姣斿錛?/p>
[Bindable] private var somethingSelected:Boolean = false;
<mx:Button label="Publish" click="publishItem()" enabled="{somethingSelected}" />
榪欐槸涓涓湁鐩婄殑灝濊瘯銆傛墍鏈夌殑渚濊禆浜嶥ataGrid鐘舵佺殑鎺т歡閮界粦瀹氫竴涓彉閲忋傛敼鍙樺彉閲忕殑鍊煎氨鏀瑰彉鎺т歡鐨別nabled鐘舵併備絾鏄綘榪橀渶瑕佺‘瀹氭敼鍙樺彉閲忓肩殑鏃舵満銆傛瘮濡傦細
private function publishItem() : void {
聽聽聽聽 // get the selected item
聽聽聽聽 // publish it
聽聽聽聽 grid.selectedItem = -1; // clear the selection
聽聽聽聽 somethingSelected = false;
}
鍦ㄥ鏉傜殑鎯呭喌涓嬶紝鍋囪鏈夊彟涓涓寜閽渶瑕佸湪閫変腑鏌愪釜鐗瑰畾鍊兼椂琚縺媧匯傞偅涔堜綘涓嶄粎闇瑕佽冭檻閫変腑瀵瑰簲鐨勯偅涓彉閲忥紝榪橀渶瑕佽冭檻鍏朵粬鎸夐挳鐨勬儏鍐點備篃灝辨槸璇達紝鍦╬ublishItem鍑芥暟涓綘榪橀渶瑕佽緗叾浠栧彉閲忕殑鍊箋?/p>
涓涓洿鏂逛究鐨勫仛娉曟槸榪欐牱鐨勩傜幇鍦ㄦ垜浠琍ublish鎸夐挳鍜宻omethingSelected鍙橀噺榪涜緇戝畾銆傛垜浠繕闇瑕佸仛鐨勬槸鎶妔omethingSelected鍙橀噺涓嶥ataGrid鐨勯変腑鐘舵佽繘琛屽叧鑱斻傚姝わ紝鎴戜滑鍙互浣跨敤<mx:Binding>鏍囩銆?/p>
<mx:Binding source="grid.selectedIndex >= 0" destination="somethingSelected" />
榪欐牱somethingSelected鐨勫間笌DataGrid鐨勯変腑鐘舵佸氨绱у瘑鍦拌仈緋昏搗鏉ヤ簡銆傚綋閫変腑浜咲ataGrid涓殑鏌愭潯鏁版嵁鏃訛紝鎵鏈夎繘琛宔nabled="{somethingSelected}"緇戝畾鐨勬寜閽氨琚縺媧匯?lt;mx:Binding>鏍囩鐨剆ource灞炴т笉闇瑕佷竴瀹氭槸涓涓彉閲忥紝瀹屽叏鍙互鏄竴涓〃杈懼紡銆?/p>
姣斿紼嶅井澶嶆潅涓鐐圭殑涓涓緥瀛愶細
<mx:Binding source="grid.selectedItem.code == 1" destination="codeOnePicked" />
榪欐牱錛屽綋DataGrid閫変腑琛岀殑code瀛楁鐨勫間負1鏃訛紝鍙橀噺codeOnePicked鐨勫艱璁劇疆涓簍rue銆?br />mxml涓彲浠ュ涓嬪畾涔夛細
<mx:CheckBox label="Code One?" selected="{codeOnePicked}" />
<mx:Button label="Publish" enabled="{somethingSelected && !codeOnePicked}" />
榪欐牱錛屽綋閫変腑琛岀殑code瀛楁鍊間負1鏃訛紝涓婇潰鐨勫閫夋琚縺媧伙紝鑰屼笅闈㈢殑鎸夐挳鏃犳晥銆?/p>
http://www.adobe.com/livedocs/flex/201/html/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Book_Parts&file=ent_services_config_097_11.html
鍦‵lex鐨勫簭鍒楀寲鍜屽弽搴忓垪鍖栬繃紼嬩腑錛屽彧鑳戒紶閫抪ublic鐨勶紝闈為潤鎬佺殑灞炴э紝濡傛灉瑕佸簭鍒楀寲姝ら儴鍒嗗唴瀹瑰湪Flex涓嶫ava闂翠紶閫掞紝蹇呴』浣跨敤externalization鏈哄埗
浠庢垜浠紑濮嬪涔燜lex鏃? 鎴戜滑灝遍渶瑕佷簡瑙d簨浠舵祦鍜孧XML鐨勫疄渚嬪寲. 鎴戦潪甯稿洶鎯戝洜涓烘垜瀹炲湪闅句互鐞嗚В浠涔堟牱鐨勪簨浠朵細琚Е鍙戞垨鑰呬簨浠朵粈涔堟椂鍊欎細琚Е鍙? 鍏抽敭鏄鐞嗚В浜嬩歡鐨勫熀紜騫朵翰鑷瀵熶簨浠舵祦鐨勫垵濮嬪寲.
鎴戜滑鏉ョ湅涓涓畝鍗曠殑MXML鐨勫簲鐢?
<?xml version="1.0" encoding="utf-8"?>
<mx:Application
聽聽聽 xmlns:mx="聽聽聽 layout="absolute"
聽聽聽 backgroundGradientColors="[#67cbff, #fcffff]"
聽聽聽 color="#000000"
聽聽聽 fontSize="12"聽聽聽
聽聽聽 preinitialize="report( event , 'preinitialize' )"
聽聽聽 initialize="report( event , 'initialize' )"
聽聽聽 creationComplete="report( event , 'creationComplete' )"
聽聽聽 applicationComplete="report( event , 'applicationComplete' )"
聽聽聽 >
聽聽聽
聽聽聽 <mx:Script>
聽聽聽聽聽聽聽 <![CDATA[聽聽聽
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽 [Bindable]
聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽 public var outTextData:String="";
聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽聽聽聽聽 public function report( event:Event , value:String ):void
聽聽聽聽聽聽聽聽聽聽聽 {
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 outTextData += String( flash.utils.getTimer() ) + 'ms >> '
聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 + event.currentTarget + '.' + value + '\n';聽聽聽
聽聽聽聽聽聽聽聽聽聽聽 }
聽聽聽聽聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 ]]>
聽聽聽 </mx:Script>
聽聽聽
聽聽聽 <mx:TextArea
聽聽聽聽聽聽聽 id="outTextArea"
聽聽聽聽聽聽聽 text="{ outTextData }"
聽聽聽聽聽聽聽 right="10" left="10" top="50" bottom="10" alpha="0.5"
聽聽聽聽聽聽聽 wordWrap="false"
聽聽聽聽聽聽聽 initialize="report( event , 'initialize' )"
聽聽聽聽聽聽聽 creationComplete="report( event , 'creationComplete' )"
聽聽聽聽聽聽聽 />
聽聽聽
聽聽聽 <mx:Button
聽聽聽聽聽聽聽 y="10" height="30" left="168" width="150"
聽聽聽聽聽聽聽 id="HelloButton"
聽聽聽聽聽聽聽 label="Say Hello"
聽聽聽聽聽聽聽 initialize="report( event , 'initialize' )"
聽聽聽聽聽聽聽 creationComplete="report( event , 'creationComplete' )"
聽聽聽聽聽聽聽 rollOver="report( event , 'rollOver' )"
聽聽聽聽聽聽聽 rollOut="report( event , 'rollOut' )"
聽聽聽聽聽聽聽 click="report( event , 'click > Hello!' )"
聽聽聽聽聽聽聽 />
聽聽聽聽聽聽聽
聽聽聽 <mx:Button
聽聽聽聽聽聽聽 id="GoodByeButton"
聽聽聽聽聽聽聽 label="Say Goodbye"
聽聽聽聽聽聽聽 y="10" left="10" height="30" width="150" color="#000000"
聽聽聽聽聽聽聽 initialize="report( event , 'initialize' )"
聽聽聽聽聽聽聽 creationComplete="report( event , 'creationComplete' )"
聽聽聽聽聽聽聽 click="report( event , 'click > Goodbye!' )"
聽聽聽聽聽聽聽 />
聽聽聽聽聽聽聽
聽聽聽 <mx:Button
聽聽聽聽聽聽聽 id="ClearButton"
聽聽聽聽聽聽聽 label="Clear"
聽聽聽聽聽聽聽 y="10" left="326" height="30" color="#000000" right="10"聽聽聽聽聽聽聽
聽聽聽聽聽聽聽 initialize="report( event , 'initialize' )"
聽聽聽聽聽聽聽 creationComplete="report( event , 'creationComplete' )"
聽聽聽聽聽聽聽 click="outTextData='';report( event , 'click' )"
聽聽聽聽聽聽聽聽 />
聽聽聽
</mx:Application>
榪欎釜搴旂敤榪愯鏃? 杈撳嚭浜嗗疄渚嬫祦紼嬪拰浜嬩歡嫻? 榪欐牎鎴戜滑灝辮兘澶熺湅鍒版墍鏈変簨浠剁殑瑙﹀彂欏哄簭. 鍙互鍙戠幇搴旂敤鍚姩鍚? 浜嬩歡鐨勯『搴忔槸涓瀹氱殑. 涓嬮潰鏄緭鍑虹殑鍐呭:
167ms >> EventFlow0.preinitialize
183ms >> EventFlow0.outTextArea.initialize
187ms >> EventFlow0.HelloButton.initialize
188ms >> EventFlow0.GoodByeButton.initialize
189ms >> EventFlow0.ClearButton.initialize
189ms >> EventFlow0.initialize
243ms >> EventFlow0.outTextArea.creationComplete
243ms >> EventFlow0.HelloButton.creationComplete
243ms >> EventFlow0.GoodByeButton.creationComplete
244ms >> EventFlow0.ClearButton.creationComplete
244ms >> EventFlow0.creationComplete
246ms >> EventFlow0.applicationComplete
涓鏃pplicationComplete浜嬩歡瑙﹀彂鍚? 緇勪歡灝變細鍦ㄩ紶鏍囦簨浠舵淳鍙戝悗瑙﹀彂鑷繁鐨勪簨浠?
1807ms >> EventFlow0.HelloButton.rollOver
2596ms >> EventFlow0.HelloButton.rollOut
2954ms >> EventFlow0.HelloButton.rollOver
3170ms >> EventFlow0.HelloButton.rollOut
3543ms >> EventFlow0.HelloButton.rollOver
4052ms >> EventFlow0.HelloButton.click > Hello!
4267ms >> EventFlow0.HelloButton.click > Hello!
4474ms >> EventFlow0.HelloButton.click > Hello!
4569ms >> EventFlow0.HelloButton.rollOut
4907ms >> EventFlow0.GoodByeButton.click > Goodbye!
5130ms >> EventFlow0.GoodByeButton.click > Goodbye!
聽
鍦ˋctionScript 3涓紝浣犱細鍙戠幇鍦╢lash.utils鍖呬腑鏈変竴緋誨垪鍑芥暟鎻愪緵浜嗗弽灝勭殑鍔熻兘銆備富瑕佸寘鍚互涓嬪姛鑳斤細
聽聽聽 * 紜畾瀵硅薄鐨勭被
聽聽聽 * 鑾峰彇綾葷殑鎴愬憳銆佹柟娉曘佹瀯閫犲嚱鏁般佺埗綾葷殑淇℃伅
聽聽聽 * 紜畾鎺ュ彛澹版槑鐨勫父鏁板拰鏂規硶
聽聽聽 * 鍦ㄨ繍琛屾椂鏍規嵁綾誨悕鍒涘緩綾葷殑瀹炰緥
聽聽聽 * 鍦ㄨ繍琛屾椂鏍規嵁鎴愬憳鍚嶇О鑾峰彇鎴栬呰緗璞℃垚鍛樼殑鍊?br />聽聽聽 * 鍦ㄨ繍琛屾椂鏍規嵁鏂規硶鍚嶇О錛岃皟鐢ㄥ璞$殑鏂規硶
浣犲彲浠ヤ嬌鐢ㄧ被浼間簬"describeType"涔嬬被鐨勫姛鑳斤紝瀹冭繑鍥炰竴涓猉ml瀵硅薄銆備婦涓涓緥瀛愶細
package {
聽聽聽 import flash.display.Sprite;
聽聽聽 import flash.utils.describeType;
聽聽
聽聽聽 public class DescribeTypeExample extends Sprite {
聽聽聽聽聽聽聽 public function DescribeTypeExample() {
聽聽聽聽聽聽聽聽聽聽聽 var child:Sprite = new Sprite();
聽聽聽聽聽聽聽聽聽聽聽 var description:XML = describeType(child);
聽聽聽聽聽聽聽聽聽聽聽 trace(description..accessor.@name.toXMLString());
聽聽聽聽聽聽聽 }
聽聽聽 }
}
濡傛灉浣犳兂榪涗竴姝ワ紝鏍規嵁綾誨悕鍒涘緩瀵硅薄鐨勫疄渚嬶紝鎴戜滑鍙互浣跨敤"getDefinitionByName()"
package {
聽聽聽 import flash.display.DisplayObject;
聽聽聽 import flash.display.Sprite;
聽聽聽 import flash.utils.getDefinitionByName;
聽聽聽 public class GetDefinitionByNameExample extends Sprite {
聽聽聽聽聽聽聽 private var bgColor:uint = 0xFFCC00;
聽聽聽聽聽聽聽 private var size:uint = 80;
聽聽聽聽聽聽聽 public function GetDefinitionByNameExample() {
聽聽聽聽聽聽聽聽聽聽聽 var ClassReference:Class = getDefinitionByName(鈥渇lash.display.Sprite鈥? as Class;
聽聽聽聽聽聽聽聽聽聽聽 var instance:Object = new ClassReference();
聽聽聽聽聽聽聽聽聽聽聽 instance.graphics.beginFill(bgColor);
聽聽聽聽聽聽聽聽聽聽聽 instance.graphics.drawRect(0, 0, size, size);
聽聽聽聽聽聽聽聽聽聽聽 instance.graphics.endFill();
聽聽聽聽聽聽聽聽聽聽聽 addChild(DisplayObject(instance));
聽聽聽聽聽聽聽 }
聽聽聽 }
}
灝界榪欐槸涓浜涢潪甯告柟渚跨殑鏂規硶錛屼絾鏄湪FlashPlayer涓嬌鐢ㄥ弽灝勮繕鏄細鏈夎澶氱殑闄愬埗錛屽洜涓虹己涔忚繍琛屾椂鐨勫姩鎬佹簮鐮佺紪璇戙備笂闈㈢殑鍔熻兘瀵逛簬閭d簺鍦ㄥ唴寤虹殑綾伙紝姣斿錛歋prite綾繪潵璇存棤鐤戞槸鏈夌敤鐨勶紝浣嗘槸瀵逛簬鑷畾涔夌被鏉ヨ錛屾垜浠細閬囧埌寰堝楹葷儲銆傛瘮濡傦細
package {
聽聽聽 import com.customtypes.string; // Custom String Implementation Class
聽聽聽 import flash.utils.getDefinitionByName;
聽聽聽 public class GetDefinitionByNameExample {
聽聽聽聽聽聽聽 public function GetDefinitionByNameExample() {
聽聽聽聽聽聽聽聽聽聽聽 var ClassReference:Class = getDefinitionByName(鈥渃om.customtypes.string鈥? as Class;
聽聽聽聽聽聽聽聽聽聽聽 var instance:Object = new ClassReference();
聽聽聽聽聽聽聽聽聽聽聽 instance.customParameter = 鈥渕y parameter鈥?
聽聽聽聽聽聽聽 }
聽聽聽 }
}
灝界鎴戜滑浣跨敤浜唅mport璇彞錛屼絾鏄?getDefinitionByName()"榪樻槸浼氬け璐ャ傚師鍥犱笂闈㈠凡緇忚榪囦簡錛屽湪榪愯鏃剁紪璇戞簮浠g爜鏄笉鍏佽鐨勩備篃璁鎬互鍚庡彲浠ャ傚湪鐩墠鎯呭喌涓嬶紝瑕佸疄鐜頒笂榪板姛鑳斤紝鑷沖皯瑕佸湪浠g爜涓垵濮嬪寲涓涓被鐨勫疄渚嬨備篃灝辨槸澹版槑涓涓被鐨勫疄渚嬶細
var customType : com.customtypes.string;
聽
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"> <mx:Script> <![CDATA[ public var foo:String = "bar"; ]]> </mx:Script> </mx:Application>
鍦ㄥ叾瀹冪殑鍦版柟灝卞彲浠ヤ嬌鐢?
Application.application.foo
鏉ヨ闂簡. 濡傛灉闇瑕? 涔熷彲浠ユ坊鍔?Bindable 灞炴?
浣嗘槸瑕佹敞鎰忓埌涓涓棶棰樺氨鏄? 鍦ㄤ嬌鐢ㄧ殑鏃跺欑紪璇戝櫒涓嶄細榪涜綾誨瀷鐨勬鏌? 鍥犳鏈濂芥坊鍔犵被鍨嬪己鍒惰漿鎹?
褰撶劧, 鍏ㄥ眬鍙橀噺瀹炵幇鐨勫彟涓縐嶆柟娉曟槸浣跨敤鍗曚緥妯″紡.
鐢辯紪璇戝櫒鑷姩閫夋嫨涓涓潪甯稿ソ鐨勬墦鍖呮柟娉曟槸姣旇緝鍥伴毦鐨勩傚緢鍙兘闇瑕佸湪搴旂敤寮鍙戞椂榪涜涓浜涜瀹氾紝騫朵笉鏃跺湴鐩戞帶綾葷殑寮曠敤銆傝兘澶熺粺璁″嚭鏈浼樼殑鍒嗘媶鏂規硶錛氬簲鐢ㄥ簲璇ュ垎鎴愬嚑涓猄WF錛屽摢浜涚被搴旇鏀懼湪鍝釜SWF涓備絾鏄繖縐嶆柟娉曞惉璧鋒潵鏇磋薄鏄竴縐嶇爺絀惰寖鐣達紝瀹為檯鎿嶄綔璧鋒潵闈炲父鍥伴毦銆?/p>
璁╂垜浠潵鐪嬩竴浜涙洿鍏鋒湁鎿嶄綔鎬х殑鏂規硶銆?/p>
寰堝搴旂敤鍒嗚В鍚庯紝鍖呭惈涓ょ綾誨瀷鐨勫姛鑳斤細鈥滃惎鍔ㄥ悗绔嬪嵆濉厖鈥濆拰鈥滃惎鍔ㄥ悗紼嶅悗濉厖鈥濄?/p>
鏈夎璁稿澶氱殑搴旂敤鏄繖縐嶆ā寮忕殑銆傛瘮濡傦細娓告垙錛涗綘鏈変竴涓父鎴忓紩鎿庡拰涓浜涙父鎴忓満鏅傛垨鑰匬ortals鍜孭orlets; 涓浜涘熀紜鐨勫叡浜姛鑳藉拰鏁版嵁椹卞姩鐨勫皬搴旂敤銆傛垨鑰呮槸涓涓ぇ鍨嬬殑鏈夌潃1500涓〉闈㈢殑淇濋櫓搴旂敤錛岃繍琛岀壒瀹氬姛鑳芥槸鍙細璁塊棶涓灝忛儴鍒嗙殑欏甸潰銆傛垨鑰呮槸鍏呮枼澶ч噺鍐呭鐨勫簲鐢紝瀹冨彲浠ョ嫭绔嬬殑鏇存柊閮ㄥ垎鍐呭鑰屼笉鏄己鍒剁敤鎴鋒瘡嬈℃祻瑙堟椂閮藉繀欏諱笅杞藉叏閮ㄥ唴瀹廣?/p>
鎴戠О榪欎簺鐩稿鐙珛鐨勫彲浠ュ歡榪熷姞杞界殑鍔熻兘涓衡滄ā鍧椻?Modules)錛岀О鍔犺澆妯″潡鐨勫簲鐢ㄤ負鈥淪hell鈥濄?/p>
鍦ㄨ繖閲岋紝鎴戜滑鍏堜笉鐪嬪浣曞仛錛屽厛鏉ョ湅涓浜?/p>
shell闇瑕佽兘澶熶笌妯″潡浜や簰錛屽悓鏍鋒ā鍧椾篃闇瑕佸拰Shell浜や簰銆傚鏋渟hell寮曠敤浜唌odules鐨勪竴涓被錛岄偅涔堝畠浼氭妸瀹冮摼鎺ヨ繘鏉ャ傚悓鏍鳳紝濡傛灉妯″潡綾誨紩鐢ㄤ簡shell綾伙紝瀹冧篃浼氭妸瀹冮摼鎺ヨ繘鏉ャ傚簲鐢ㄨ兘姝e父榪愯鍙湁涓や釜鏂規硶錛氭垨鑰呭紩鐢ㄦ槸鐩稿悓鑰屼笖鍏變韓鐨?榪欐牱灝變笉闇瑕佷笅杞戒袱嬈?錛屾垨鑰呬袱鑰呮槸涓嶅悓鐨勶紝鑰屼笖娌℃湁浠諱綍鍏崇郴(灝界涓や釜綾誨悕瀛楃浉鍚岋紝浣嗘槸瀹冧滑琚涓烘槸鏃犲叧鐨勶紝鑰屼笖涓嶈兘浜や簰)銆?/p>
鏈濂界殑瑙e喅鍔炴硶鏄妯″潡鍜宻hell閫氳繃鎺ュ彛浜や簰銆傝繖鏍鳳紝shell涓嶉渶瑕佸紩鐢ㄦā鍧楋紝鑰屾槸寮曠敤妯″潡浼氬疄鐜扮殑涓浜涙帴鍙c傚悓鏍鳳紝妯″潡涓嶅疄鐜皊hell鐨勭被錛岃屾槸鍏佽璋冪敤鐨凙PI鎺ュ彛銆?/p>
榪欐牱鍦╯hell鍙樺寲鐨勬椂鍊欏噺灝戜簡閲嶆柊緙栬瘧妯″潡鐨勬鏁般傚叿浣撳疄鐜扮殑鍙樺寲棰戠巼寰寰浼氭瘮鎺ュ彛鏈韓鐨勫彉鍖栭珮寰楀錛岃屽彧瑕佹帴鍙gǔ瀹氾紝灝變笉闇瑕侀噸鏂扮紪璇戞墍鏈夌殑涓滆タ銆?/p>
娉ㄦ剰錛氶渶瑕佷嬌鐢╡xtern錛堟垨鑰卐xtern-library-path)閫夐」鏉ュ垱寤烘ā鍧楋紝榪欐牱鍙互鑷姩鍓旈櫎shell鐨勭被錛屽洜涓烘ā鍧楁槸琚姞杞藉埌shell鐨勫瓙搴旂敤鍩熶腑鐨勶紝灝唖hell鐨勭被鍓旈櫎鏄畨鍏ㄧ殑銆傝繖鏍鋒ā鍧楀彲浠ョ湡姝g洿鎺ュ紩鐢╯hell涓殑綾匯?/p>
聽
璁頒綇SWC鏂囦歡鏄竴涓寘鍚玈WF鏂囦歡鐨勪簩榪涘埗鏂囦歡錛岃孲WF鏂囦歡鍖呭惈榪愯鏃剁殑瀹氫箟鍜岄檮灞炲厓鏁版嵁銆備綘鍙互鐢ㄥ帇緙╁伐鍏鋒瘮濡俉inZip鏉ユ墦寮SWC鏂囦歡銆?br />鍦ㄤ嬌鐢≧SL涔嬪墠錛岄鍏堥渶瑕佷簡瑙e浣曢潤鎬侀摼鎺ヤ竴涓猄WC鏂囦歡銆?/p>
鍦ㄨ繖涓緥瀛愪腑錛屽簲鐢ㄦ湁涓涓猘pp.mxml鏂囦歡錛屼嬌鐢≒roductConfigurator.as鍜孭roductView.as銆傛枃浠剁洰褰曞涓嬶細
project/src/app.mxml
project/libsrc/ProductConfigurator.as
project/libsrc/ProductView.as
project/lib/
project/bin/
緙栬瘧榪欎釜搴旂敤鏃訛紝鍙互浣跨敤source-path閫夐」灝?libsrc鐩綍涓嬬殑綾婚摼鎺ヨ繘鏉ワ紝鏂規硶濡備笅錛?/p>
cd project/src
mxmlc -o=../bin/app.swf -source-path+=../libsrc app.mxml
榪欎釜鍛戒護娣誨姞ProductConfigurator鍜孭roductView綾誨埌SWF鏂囦歡涓?/p>
濡傛灉瑕佸垱寤哄簱錛屽彲浠ョ敤compc鏉ュ垱寤篠WC鏂囦歡錛岀敤涓嬮潰鐨勫懡浠わ細
cd project
compc -source-path+=libsrc -debug=false -o=lib/mylib.swc
ProductConfigurator ProductView
娉ㄦ剰瑕佸皢debug閫夐」璁劇疆涓篺alse. 鐢熸垚緇撴灉鏄痯roject/lib/mylib.swc鏂囦歡錛屽寘鍚玃roductConfigurator鍜孭roductView涓や釜綾匯?/p>
鐜板湪鍙互浣跨敤鏂板垱寤虹殑搴撴潵閲嶆柊緙栬瘧搴旂敤錛岀敤library-path閫夐」鏉ユ寚瀹氬簱錛屾柟娉曞涓嬶細
cd project/src
mxmlc -o=../bin/app.swf -library-path+=../lib/mylib.swc app.mxml
鍒涘緩搴撲互鍚庯紝浣犲彲浠ョ敤RSL鏉ラ噸鏂扮紪璇戠敓鎴愬簲鐢ㄣ傚畬鏁寸殑姝ラ濡備笅錛?/p>
聽聽 1. 鎸囩ず緙栬瘧鍣ㄤ笉瑕佸皢搴撻摼鎺ュ埌搴旂敤涓?br />聽聽 2. 鍑嗗RSL錛屼互渚夸簬鍦ㄨ繍琛屾椂浣跨敤銆?br />聽聽 3. 鎸囩ず緙栬瘧鍣ㄧ敓鎴愰檮鍔犲厓鏁版嵁鐢ㄤ簬鍔犺澆RSL銆?/p>
絎竴姝ユ槸鎸囧畾緙栬瘧鐢熸垚搴旂敤鏃跺簱涓殑鍝簺綾婚渶瑕佹帓闄ゅ湪澶栥備富瑕佹槸浣跨敤external-library-path閫夐」錛屽涓嬮潰鐨勪緥瀛愭墍紺猴細
cd project/src
mxmlc -o=../bin/app.swf -external-library-path+=../lib/mylib.swc app.mxml
濡傛灉浣犲皾璇曡繍琛宎pp.swf錛孎lash Player浼氭姏鍑轟竴涓繍琛屾椂寮傚父銆傚洜涓篜roductConfigurator鍜孭roductView綾昏繕鏈畾涔夈俥xternal-library-path閰嶇疆閫夐」鍛婅瘔緙栬瘧鍣ㄧ紪璇戣繖浜涘簱錛屼絾鏄拷鐣ヤ簡瀹氫箟銆備綘涔熷彲浠ヤ嬌鐢╡xterns閫夐」錛屼絾鏄竴鑸潵璇達紝浣跨敤external-library-path鏇存柟渚褲?/p>
涓嬩竴姝ユ槸鍑嗗RSL浠ヤ究浜庤兘鍦ㄨ繍琛屾椂鎵懼埌瀹冦傞鍏堜粠SWC鏂囦歡涓皢library.swf瑙e帇鍑烘潵銆?/p>
涓嬮潰鏄浣曡В鍘嬬殑渚嬪瓙錛?/p>
cd project/lib
unzip mylib.swc library.swf
mv library.swf ../bin/myrsl.swf
姝や緥瀛愪腑灝唋ibrary.swf鏇村悕涓簃yrsl.swf錛屽茍鎶婂畠縐誨姩鍒板簲鐢⊿WF鏂囦歡鎵鍦ㄧ殑鐩綍銆?/p>
鏈鍚庝竴姝ユ槸浣跨敤RSL閲嶆柊緙栬瘧搴旂敤銆備富瑕佹槸浣跨敤runtime-shared-libraries閫夐」錛屾柟娉曞涓嬶細
cd project/src
mxmlc -o=../bin/app.swf -external-library-path+=../lib/mylib.swc
-runtime-shared-libraries=myrsl.swf app.mxml
鐜板湪鏂扮殑SWF鏂囦歡浼氬湪榪愯搴旂敤鍓嶅姩鎬佸姞杞絉SL浜嗐?/p>
聽聽聽 * runtime-shared-libraries 鎻愪緵榪愯榪愯鏃跺叡浜簱鐨勪綅緗?
聽聽聽 * external-library-path|externs|load-externs 鎻愪緵緙栬瘧鏃跺簱鐨勪綅緗? 緙栬瘧鍣ㄩ渶瑕佽繖涓俊鎭姩鎬侀摼鎺?
浣跨敤runtime-shared-libraries閫夐」鏉ユ寚瀹歋WF鏂囦歡鐨勪綅緗? 榪欐牱搴旂敤鑳藉鍦ㄨ繍琛屾椂鍔犺澆RSL. 闇瑕佹寚瀹歋WF涓庨儴緗蹭綅緗殑鐩稿璺緞. 姣斿: 濡傛灉鎶妉ibrary.swf鏂囦歡鏀懼湪web_root/libraries鐩綍涓? 鑰屽簲鐢ㄥ湪web_root鐩綍涓? 閭d箞鏂囦歡鐨勬寚瀹氭柟娉曟槸: libraries/library.swf
鍙互鐢ㄨ繖涓夐」鎸囧畾澶氫釜搴? 濡傛灉鎸囧畾浜嗗涓簱, 闇瑕佺敤閫楀彿鍒嗛殧.
浣跨敤external-library-path閫夐」鏉ユ寚瀹歭ibrary鍦ㄧ紪璇戞椂鐨凷WC鏂囦歡鎴栬呯洰褰曠殑浣嶇疆. 緙栬瘧鍣ㄤ細鍦ㄧ紪璇戞椂鏍規嵁榪欎釜閫夐」榪涜閾炬帴鐨勬鏌? 浣犺繕鍙互浣跨敤externs鎴栬卨oad-externs閫夐」鏉ユ寚瀹氬叾浠栧崟鐙殑classes鎴栬厁ml鏂囦歡鏉ュ畾涔夊簱鐨勫唴瀹?
涓嬮潰鏄竴涓紪璇慚yApp搴旂敤鐨勫懡浠よ紺轟緥, 鍏朵腑浣跨敤浜?涓簱:
mxmlc -runtime-shared-libraries=
../libraries/CustomCellRenderer/library.swf,
../libraries/CustomDataGrid/library.swf
-external-library-path=../libraries/CustomCellRenderer,
../libraries/CustomDataGrid MyApp.mxml
搴撶殑欏哄簭闈炲父閲嶈, 鍥犱負鍩虹綾誨繀欏誨厛鍔犺澆.
浣犲厛鍙互浣跨敤閰嶇疆鏂囦歡, 紺轟緥濡備笅:
<compiler>
聽聽聽 <external-library-path>
聽聽聽聽聽聽聽 <path-element>../libraries/CustomCellRenderer</path-element>
聽聽聽聽聽聽聽 <path-element>../libraries/CustomDataGrid</path-element>
聽聽聽聽聽聽聽 <path-element>../libs/playerglobal.swc</path-element>
聽聽聽 </external-library-path>
</compiler>
<runtime-shared-libraries>
聽聽聽 <url>../libraries/CustomCellRenderer/library.swf</url>
聽聽聽 <url>../libraries/CustomDataGrid/library.swf</url>
</runtime-shared-libraries>
runtime-shared-libraries閫夐」鍊兼槸library.swf鏂囦歡鏄浉瀵歸儴緗茬洰褰曠殑璺緞. external-library-path閫夐」鏄紪璇戞椂SWC鏂囦歡鐨勮礬寰? 鍥犳, 蹇呴』鍏堢煡閬撳簱鐨勯儴緗茶礬寰?
聽
紺轟緥涓? 緙栬瘧鏃舵枃浠剁粨鏋勫涓?
c:/appfiles/MyApp.mxml
c:/libraries/CustomCellRenderer/CustomCellRenderer.swc
c:/libraries/CustomDataGrid/CustomDataGrid.swc
library.swf鍦ㄧ紪璇戣繘涓嶆槸蹇呴渶鐨? Flex緙栬瘧鍣ㄤ笉楠岃瘉SWF鏂囦歡鐨勫瓨鍦ㄤ笌鍚? 浣嗕細鎶婅礬寰勪俊鎭紪璇戣繘琛屾渶鍚庣殑搴旂敤浠g爜涓?
鏂囦歡鐨勯儴緗茬粨鏋勫涓?
web_root/MyApp.swf
web_root/libraries/CustomCellRenderer/library.swf
web_root/libraries/CustomDataGrid/library.swf
聽
鍙互浣跨敤Flex Builder鎴栬匔ompc鍛戒護琛屾潵鍒涘緩搴? 搴撳彲浠ユ槸涓涓猄WC鏂囦歡, 鎴栬呮槸鍖呭惈浜唋ibrary.swf鍜宑atalog.xml鏂囦歡鐨勭洰褰? 涓涓簱閫氬父鍖呭惈鑷畾涔夌粍浠跺拰綾? 鐒跺悗灝卞彲浠ュ湪RSL涓嬌鐢ㄨ繖浜涘簱浜?
鍦‵lex Bulder涓? 閫氳繃浣跨敤Flex Library Build Path瀵硅瘽妗嗘潵娣誨姞璧勬簮鍒板簱涓?
鍦ㄥ懡浠よ涓? 浣跨敤include-classes鍜宨nclude-namespaces閫夐」鏉ユ坊鍔犳枃浠跺埌搴撲腑.
涓嬮潰鐨勫懡浠よ紺轟緥璇存槑浜嗗浣曞垱寤轟竴涓悕瀛楀彨CustomCellRenderer鐨勫簱:
compc -source-path ../mycomponents/components/local
-include-classes CustomCellRendererComponent -directory=true -debug=false
-output ../libraries/CustomCellRenderer
鎵鏈夊寘鍚殑緇勪歡蹇呴』鏄潤鎬侀摼鎺ョ殑鏂囦歡. 浣跨敤compc緙栬瘧鍣ㄥ垱寤哄簱鏃? 涓嶈兘浣跨敤include-file閫夐」, 鍥犱負榪欎釜閫夐」涓嶆槸灝唋ibrary.swf鏂囦歡闈欐侀摼鎺ュ埌搴撲腑鐨?
鍙互浣跨敤directory閫夐」鎸囧畾杈撳嚭鍒頒竴涓洰褰曡屼笉鏄埌涓涓猄WC鏂囦歡涓?
<?xml version="1.0">
<flex-config>
聽聽聽 <compiler>
聽聽聽聽聽聽聽 <source-path>
聽聽聽聽聽聽聽聽聽聽聽 <path-element>mycomponents/components/local</path-element>
聽聽聽聽聽聽聽 </source-path>
聽聽聽 </compiler>
聽聽聽 <output>libraries/CustomCellRenderer</output>
聽聽聽 <directory>true</directory>
聽聽聽 <debug>false</false>
聽聽聽 <include-classes>
聽聽聽聽聽聽聽 <class>CustomCellRendererComponent</class>
聽聽聽 </include-classes>
</flex-config>
杈撳嚭浼氭槸涓涓洰褰?鐩綍閲屽寘鍚袱涓枃浠?br />聽聽聽 * catalog.xml
聽聽聽 * library.swf
鍒涘緩library.swf鏂囦歡鍚? 浣犲彲浠ョ紪璇戝簲鐢ㄥ茍涓旀寚瀹氭枃浠剁殑浣嶇疆.
Flex and Flash provide a complete, unlimited, flexible tool to build user experiences. From the standpoint of a programmer鈥檚 time investment, you can learn a single language for building UIs without worrying about running into problems or limitations later鈥攊ssues like:
鍘熸枃閾炬帴:
http://www.artima.com/weblogs/viewpost.jsp?thread=193593
Computing Thoughts
Hybridizing Java
by Bruce Eckel
January 30, 2007
RSL涔熶笉鏄浜庢墍鏈夌殑搴旂敤閮芥槸鏈夌泭鐨? 闇瑕佸搴旂敤RSL鍓嶅悗鐨勪笅杞芥椂闂村拰鍚姩鏃墮棿閮芥祴璇曡繃, 鎵嶈兘寰楀埌姝g‘鐨勭粨璁?
RSL涓嶈兘璺ㄥ煙鍏變韓. 濡傛灉瀹㈡埛鍦ㄤ竴涓煙涓嬌鐢ㄤ簡RSL, 鐒跺悗榪愯浜嗗彟涓涓煙鐨勫簲鐢? 铏界劧榪欎袱涓猂SL鏄浉鍚岀殑, 浣嗘槸闇瑕佷笅杞戒袱嬈?
RSL閫氬父浼氬鍔犲簲鐢ㄧ殑鍚姩鏃墮棿. 榪欐槸搴旂敤涓嶇鏁翠釜搴撳疄闄呭浣曚嬌鐢? 鍙槸綆鍗曞湴鍏ㄩ儴鍔犺澆鏁翠釜搴? 灝辮繖涓鐐規潵璇? RSL瓚婂皬瓚婂ソ. 榪欎笌闈欐侀摼鎺ュ簱鐨勪嬌鐢ㄦ槸涓嶅悓鐨? 褰撲綘緙栬瘧涓涓狥elx搴旂敤鏃? 緙栬瘧鍣ㄥ彧瑙e紑闇瑕佺殑緇勪歡. 涓鑸潵璇? 搴撶殑澶у皬鍙互鏄換鎰忕殑, 瀹冨彧褰卞搷緙栬瘧鏃墮棿鑰屼笉浼氬獎鍝嶄笅杞界殑鏃墮棿.
濡傛灉鍦ㄥソ鍑犱釜搴旂敤涓嬌鐢ㄧ浉鍚岀殑緇勪歡搴? 閭d箞鍙互鑰冭檻鍚堝茍榪欎簺搴? 褰㈡垚涓涓猂SL. 浣嗘槸濡傛灉搴撳悎騫跺悗, 姣忎釜搴旂敤鍙細鐢ㄥ埌鍏朵腑鐨勪竴灝忛儴鍒? 閭d箞榪樹笉濡傚鍔犺澆鍑犱釜灝廟SL鏇撮珮鏁?
濡傛灉涓浜涚被閲嶅鎵撳寘鍦ㄥ涓猂SL涓? 閭d箞涓瀹氳娉ㄦ剰鍚屾鏇存柊鐨勯棶棰?
RSL涓嶈兘搴旂敤鍦ㄥ熀綾繪槸Sprite鎴栬匨ovieClip鐨勭函ActionScript欏圭洰涓? 鍥犱負RSL闇瑕佸熀綾葷煡閬撳浣曞姞杞絉SL, 姣斿: Application鎴栬匰impleApplication.
鍏充簬聽framework.swc鏂囦歡
framework.swc鏄竴涓爣鍑嗙殑SWC鏂囦歡. 緙虹渷鍦板畠涓嶈兘鐢ㄤ綔RSL. 鏁翠釜framwork.swc鏂囦歡涓嶈閾炬帴鍒頒換浣曚竴涓簲鐢ㄤ腑. Flex緙栬瘧鍣ㄥ彧灝嗛偅浜涘簲鐢ㄧ敤鍒扮殑閮ㄥ垎閾炬帴鍒扮敓鎴愭渶鍚庣殑SWF鏂囦歡. 姣斿: 濡傛灉涓涓簲鐢ㄥ彧浣跨敤浜咮utton, Panel鍜孴extArea鎺т歡, 閭d箞鍙湁榪欏嚑涓帶浠跺拰瀹冧滑鐨勪緷璧栭」琚紪璇戝櫒閾炬帴.
鍑犱箮鎵鏈夌殑搴旂敤閮介渶瑕乫ramework.swc鏂囦歡鐨勪竴閮ㄥ垎, 浣嗘槸瀹冨茍涓嶉傚悎浣滀負RSL. 鍘熷洜濡備笂鎹, RSL鏄暣涓摼鎺? 涓嶇瀹為檯浣跨敤澶氬皯鐨? 濡傛灉RSL鍖呭惈浜嗗緢澶氱被, 鑰屽簲鐢ㄥ彧浣跨敤浜嗗叾涓殑涓灝忛儴鍒? 閭d箞榪欐牱鐨勫姞杞芥柟寮忓茍涓嶆槸鏈鍚堢悊鐨? 榪欐牱浣跨敤浼氶犳垚搴旂敤鐨勫惎鍔ㄦ椂闂村ぇ澶у鍔?
RSL鐨勪紭鐐?/p>
涓嬮潰鐨勪竴涓緥瀛愯鏄庝簡灝嗗嚑涓殑鍏變韓緇勪歡鍋氭垚RSL鐨勪紭鐐? 鍦ㄨ繖涓緥瀛愪腑, 緇勪歡搴撶殑澶у皬鏄?50K, 緙栬瘧鍚庣殑搴旂敤鐨勫ぇ灝忔槸100K. 聽
浣跨敤浜哛SL, RSL鍙涓嬭澆涓嬈? 閭d箞鍚堣涓嬭澆閲忔槸350K, 鑺傜害浜?0%. 濡傛灉鍐嶆坊鍔犵3涓? 絎?涓簲鐢ㄧ殑璇? 姣忔閮借兘150K鐨勪笅杞介噺.
涓鑸潵璇? 鍦ㄤ竴涓煙涓嬌鐢ㄥ悓涓涓猂SL鐨勫簲鐢ㄨ秺澶? 閭d箞濂藉灝辮秺澶?
褰撲綘浣跨敤闈欐侀摼鎺ユ椂, 緙栬瘧鍣ㄥ皢搴旂敤涓墍鏈夊紩鐢ㄧ殑綾誨拰渚濊禆鐢熸垚鍒版渶緇堢殑SWF鏂囦歡涓? 榪欎釜鏂囦歡浼氭瘮杈冨ぇ, 涓嬭澆涔熶細姣旇緝鎱? 浣嗘槸涓嬭澆瀹屾瘯鍚? 榪愯浼氭瘮杈冨揩, 鍥犱負SWF鏂囦歡涓凡緇忓寘鍚簡鎵鏈夌殑浠g爜.
濡傛灉浣犵殑搴旂敤涓嬌鐢ㄤ簡綾誨簱, 閭d箞浣犻渶瑕佷嬌鐢ㄧ被璺緞鎴栬呮槸娣誨姞SWC鏂囦歡. 濡傛灉鏄嬌鐢ㄧ被璺緞, 緙栬瘧鍣ㄤ細灝嗙被璺緞涓敤鍒扮殑閭i儴鍒嗙被鎵撳寘鐢熸垚鍒癝WF鏂囦歡涓? 濡傛灉鏄嬌鐢⊿WC鏂囦歡, 緙栬瘧鍣ㄤ細灝嗘暣涓猄WC鏂囦歡鎵撳寘鍒癝WF鏂囦歡涓?
鍔ㄦ侀摼鎺ユ槸榪欐牱鐨? 涓涓簲鐢ㄨ浣跨敤鐨勪竴閮ㄥ垎綾誨瓨鍦ㄤ簬涓涓閮ㄧ殑鏂囦歡涓? 榪愯鏃跺姩鎬佸姞杞? 榪欐牱鐨勮瘽, 涓籗WF鏂囦歡鍙互灝忎竴浜? 浣嗘槸搴旂敤渚濊禆浜庤繍琛屾椂鍔犺澆鐨勫閮ㄦ枃浠? RSL灝辨槸浣跨敤鍔ㄦ侀摼鎺ョ殑.
濡傛灉鎯充嬌鐢ㄥ姩鎬侀摼鎺ョ被, 闇瑕佹妸瀹冧滑緙栬瘧鎴愬簱. 鐒跺悗緙栬瘧鍣ㄥ皢搴撲腑鐨勫唴瀹逛粠SWF鏂囦歡鍓旈櫎鍑哄幓. 鑰屼笖蹇呴』鍦ㄧ紪璇戞椂鎻愪緵閾炬帴媯鏌?
涓烘寚瀹氬摢浜涙枃浠舵槸鍔ㄦ侀摼鎺ョ殑,闇瑕佷嬌鐢ㄥ閮ㄥ簱璺緞閫夐」,澶栭儴閫夐」鎴栬呭閮ㄥ姞杞界紪璇戦夐」. 榪欎簺閫夐」鍛婅瘔緙栬瘧鍣ㄤ粠搴旂敤涓幓闄ゆ閮ㄥ垎鍐呭, 鑰岄澶囧湪榪愯鏃惰皟鐢? 澶栭儴閫夐」涓哄姩鎬侀摼鎺ユ寚瀹氫簡鍗曠嫭鐨勭被. 澶栭儴鍔犺澆閫夐」鎸囧畾浜嗕竴涓猉ML鏂囦歡, 鎻忚堪浜嗗姩鎬侀摼鎺ョ殑綾?
鎸囧畾SL鐨勫閮ㄨ祫婧愮殑欏哄簭鏄潪甯稿叧閿殑, 鍥犱負琚叾浠栫被璋冪敤鐨勫熀紜綾誨繀欏昏棣栧厛鍔犺澆.
浣犺繕瑕佺敤runtime-shared-libraries閫夐」鏉ユ寚瀹歊SL鐨勪綅緗?
浣犲彲浠ヤ嬌鐢╨ink-report榪欎釜緙栬瘧閫夐」鏉ユ煡鐪嬪簲鐢ㄧ殑閾炬帴淇℃伅.
濡傛灉浣犳湁澶氫釜搴旂敤鑰屼笖榪欎簺搴旂敤鍏變韓涓浜涙牳蹇冪粍浠舵垨鑰呯被, 閭d箞浣滀負RSL,鐢ㄦ埛鍙細鍞竴鐨勪竴嬈″姞杞借繖浜涜祫婧? 鍙搴旂敤鍦ㄥ悓涓涓煙涓? 榪欎簺搴旂敤鍏變韓鍚屼竴涓紦瀛樼殑RSL, 榪欐牱搴旂敤鏂囦歡鐨勫ぇ灝忓氨鍑忓皬浜? 浣跨敤RSL鐨勫簲鐢ㄨ秺澶? 鏁堟灉瓚婂ソ, 濡傛灉鍙湁涓涓簲鐢? 鎬葷殑鏂囦歡澶у皬涓嶄絾涓嶅噺灝?鍙嶈屼細澧炲ぇ.
浣犳棦鍙互浣跨敤Flex Builder閫氳繃欏圭洰閫夐」鏉ュ垱寤篎lex鐨凩ibrary欏圭洰,涔熷彲浠ヤ嬌鐢╟ompc榪欐牱鐨勫懡浠よ. 緙栬瘧濂絉SL浠ュ悗, 鍙互鍦ㄧ紪璇戝簲鐢ㄦ椂鎶奓ibrary鐨勪綅緗紶閫掔粰緙栬瘧鍣?
涓嬮潰鏄傚悎浣跨敤RSL鐨勫吀鍨嬬敤渚?
聽聽聽 * 澶у瀷搴旂敤, 闇瑕佷嬌鐢ㄩ氱敤緇勪歡搴撳姞杞藉涓皬鍨嬪簲鐢? 鏈欏剁駭鐨勫簲鐢ㄥ拰涓嬬駭搴旂敤鍙互鍏變韓瀛樺偍鍦≧SL涓殑緇勪歡.
聽聽聽 * 鍦ㄤ竴涓湇鍔″櫒涓婄殑浣跨敤閫氱敤緇勪歡搴撶殑緋誨垪搴旂敤. 褰撶敤鎴鋒搷浣滅涓涓簲鐢ㄦ椂, 鐢ㄦ埛涓嬭澆搴旂敤鐨凷WF鏂囦歡鍜孯SL. 褰撴搷浣滅浜屼釜搴旂敤鏃? 鐢ㄦ埛灝卞彧闇瑕佷笅杞藉簲鐢ㄦ湰韜殑SWF鏂囦歡灝辮浜?
聽聽聽聽
聽聽聽 * 涓涓嫭绔嬬殑搴旂敤浣跨敤RSL鐨勬剰涔夊湪浜? 濡傛灉榪欎釜搴旂敤鏈韓浼氶綣佺殑淇敼, 鑰屾湁涓閮ㄥ垎緇勪歡鏄瀬灝戞敼鍔ㄧ殑. 鍦ㄨ繖縐嶆儏鍐典笅, 浣跨敤RSL鐨勫ソ澶勬槸: 緇勪歡涓嬭澆涓嬈? 鑰屽簲鐢ㄥ彲浠ュ嬈′笅杞?
聽
3) 涔熶笉瑕佺敤*綾誨瀷銆?/p>
4) 涓嶈灝咥ctionScript鐨勭被澹版槑涓哄姩鎬併?/p>
5) 娉ㄦ剰Application.application (鍜屽叾浠栫殑鏃犵被鍨嬬殑妗嗘灦灞炴?. 榪欎釜灞炴ф湁涓浜涘彜鎬?聽聽浠栧簲璇ユ槸Applicaton綾誨瀷鐨勶紝鍥犱負浠栨寚鍚戠殑瀹炰緥蹇呴』鏄疉pplication鐨勫瓙綾? 浣嗗疄闄呬笂浠栫殑綾誨瀷鏄?Object', 鏃犳硶搴旂敤緙栬瘧鏃剁殑媯鏌ャ傚鏋滀綘涓瀹氳鐢紝鏈濂戒篃榪涜綾誨瀷鐨勫己鍒舵ц漿鎹€?
MyApplication( Application.application ).functionCall();
6) 灝佽浣犵殑Xml銆備嬌鐢╔ml涓嶴erver榪涜鏁版嵁鐨勪氦浜掗潪甯告柟渚匡紝浣嗘槸灝介噺閬垮厤浣跨敤Xml浣滀負鏍稿績鏁版嵁妯″瀷銆備粠鏈嶅姟鍣ㄦ敹鍒版暟鎹悗錛屽敖閲忔妸Xml杞崲涓哄己綾誨瀷鐨勫璞℃ā鍨嬨傚湪Flex搴旂敤鍐呴儴浣跨敤Xml鏄粫寮緙栬瘧鍣ㄧ殑浣滄硶銆?
7) 涓嶈浣跨敤DynamicEvent.
8) 涓嶈浣跨敤mx:Model銆傚涓婃墍榪幫紝璇峰敖閲忎嬌鐢ㄨ嚜瀹氫箟鐨勫己綾誨瀷鐨勭被.
9) 涓嶈浣跨敤Cairngorm涓殑data灞炴э紝鑰屽簲璇ョ戶鎵挎墿灞旵airngormEvent鏉ヤ紶閫掓暟鎹?/p>
10) 涓嶈鎶婄紪璇戝櫒鐨勪弗鏍兼ā寮忓叧鎺?/p>
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 var label:String = childItem[tree.labelField];
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 var branch:Boolean = descriptor.isBranch(childItem);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // good place for a custom method()
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 trace("Sibling Nodes :: ", label, "Is Branch :: ", branch);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // if the child item is a branch
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 if(descriptor.isBranch(childItem))
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // traverse the childs branch all the way down
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // before returning
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 walkTree(tree, childItem);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // do it again!
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 cursor.moveNext();
聽 聽 聽 聽 聽 聽 聽 聽 }
聽 聽 聽 聽 聽 聽 }
聽 聽 聽 聽 }
聽 聽 }
聽 聽 else// we don't want the parent OR this is the second iteration
聽 聽 {
聽 聽 聽 聽 // if we are a branch
聽 聽 聽 聽 if(descriptor.isBranch(item))
聽 聽 聽 聽 {
聽 聽 聽 聽 聽 聽 // if the branch has children to run through
聽 聽 聽 聽 聽 聽 if(descriptor.hasChildren(item))
聽 聽 聽 聽 聽 聽 {
聽 聽 聽 聽 聽 聽 聽 聽 // get the children of the branch
聽 聽 聽 聽 聽 聽 聽 聽 childItems = descriptor.getChildren(item);
聽 聽 聽 聽 聽 聽 }
聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽 聽 // if the child items exist
聽 聽 聽 聽 聽 聽 if(childItems)
聽 聽 聽 聽 聽 聽 {
聽 聽 聽 聽 聽 聽 聽 聽 // create our cursor pointer
聽 聽 聽 聽 聽 聽 聽 聽 cursor = childItems.createCursor();
聽 聽 聽 聽 聽 聽 聽 聽 // loop through all of the children
聽 聽 聽 聽 聽 聽 聽 聽 // if one of these children are a branch we will recurse
聽 聽 聽 聽 聽 聽 聽 聽 while(!cursor.afterLast)
聽 聽 聽 聽 聽 聽 聽 聽 {
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // get the current child item
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 childItem = cursor.current;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 var label:String =聽 childItem[tree.labelField];
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 var branch:Boolean = descriptor.isBranch(childItem);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // good place for a custom method()
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 trace("-- Sub Node :: ", label, "Is Branch :: ", branch);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // if the child item is a branch
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 if(descriptor.isBranch(childItem))
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // traverse the childs branch all the way down
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // before returning
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 walkTree(tree, childItem);
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 // check the next child
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 cursor.moveNext();
聽 聽 聽 聽 聽 聽 聽 聽 }
聽 聽 聽 聽 聽 聽 }
聽 聽 聽 聽 }
聽 聽 }
}
聽
聽
鍦‵lex鐨勫紑鍙戣繃紼嬩腑錛屽挨鍏舵槸鍦ㄤ嬌鐢–airngorm鐨勬椂鍊欙紝鎬諱細閬囧埌闇瑕佸湪Model鐨勫睘鎬у兼敼鍙樺悗錛岄渶瑕佽皟鐢ㄤ竴涓寚瀹氱殑鍑芥暟銆備紶緇熺殑瑙e喅鏂規硶鏄嬌鐢ㄤ竴涓猄etter鏂規硶錛屽湪榪欎釜鏂規硶涓鍏堝灞炴ц祴鍊鹼紝鐒跺悗璋冪敤鎸囧畾鐨勫嚱鏁幫紝姣斿錛?/p>
---------------------------
[ChangeEvent("deleteEnabledChange")]
public function get deleteEnabled() : Boolean {
return _deleteButtonVisible;
}
public function set deleteEnabled(value : Boolean) : Void {
_deleteButtonVisible = value;
SimpleButton(deleteButton)._visible = false;
dispatchEvent(new Event("deleteEnabledChange", this));
}
--------------
浣嗘槸鐜板湪鎴戜滑鏈変竴涓洿綆媧佺殑瑙e喅涔嬮亾
棣栧厛娣誨姞榪欐牱涓涓被
package com.adobe.ac.util
{
聽聽 public class Observe
聽聽 {
聽聽聽聽聽 public var handler : Function;
聽
聽聽聽聽聽 public function set source( source : * ) : void
聽聽聽聽聽 {
聽聽聽聽聽聽聽聽 handler.call();
聽聽聽聽聽 }
聽聽 }
}
鐒跺悗灝卞彲浠ヤ嬌鐢ㄨ繖涓綔涓烘爣絳句簡銆?br /><util:Observe source="{ model.myProperty }"
聽聽聽聽聽聽聽聽聽聽聽聽聽 handler="{ this.myFunction }"/>
浣跨敤浜嗚繖鏍風殑涓涓爣絳懼悗錛屼粖鍚庡槮鏄model.myProperty榪涜璧嬪鹼紝灝變細璋冪敤myFunction
榪欎釜鍙風О涓栦笂鏈灝忕殑鏍囩鏄笉鏄緢濂界敤鍟婏紵
聽
聽
澧炲姞楠岃瘉
鎴戜滑鐜板湪娣誨姞瀵硅偂紲ㄦ姤浠風殑楠岃瘉鍔熻兘錛屽浜庤繖涓鐐癸紝鎴戜滑鍙互浣跨敤mx.validators.StringValidator鏉ュ畬鎴愯繖涓鍔熻兘銆傚簲鐢ㄤ腑榪欎袱涓弬鏁板叡鍚屾帶鍒舵寜閽殑鏈夋晥鎬с傝繖鏍峰彲浠ュ湪Model瀵硅薄涓緗竴涓猧sValid灞炴э紝鐢ㄤ簬緇勫悎榪欎袱鍙傛暟銆?br />
isSymbolValid鏄竴涓睘鎬э紝瀛樻斁StringValidator鐨勭粨鏋溿?br />鍦⊿tockMarketPod.mxml涓坊鍔爉x:StringValidator榪欎釜Tag
浠庤鍥句腑鐩存帴璋冪敤Model瀵硅薄涓嶇鍚圡VC鍘熷垯錛屽洜涓鴻鍥懼師鍒欎笂鍙兘媧懼彂浜嬩歡銆備絾鍦ㄨ繖涓緥瀛愪腑錛岃繖鏍峰凡緇忚凍澶熷ソ浜嗐?/p>
澧炲姞鏍煎紡鍖?br />鎴戜滑灝嗚偂紲ㄦ姤浠蜂互閲戦鐨勬柟寮忚繘琛屽睍紺猴紝鍦⊿tockMarketPod.mxml涓鍔犱竴涓猣ormatter
鐜板湪鐪嬩竴涓嬪畬鏁寸殑StockQuote綾?br />
鍏朵腑isPending灞炴х殑鍊肩敱GetStockQuoteCommand鎺у埗
鏈鍚庣湅涓涓婼tockMarketPod.mxml鐨勫叏閮ㄤ唬鐮?br />
姝よ鍥句腑鎴戜滑涓嶉渶瑕佷嬌鐢∕odelLocator錛岃屾槸浣跨敤StockQuote浣滀負鍙傛暟浼犲叆StockMarketPod.mxml
寮曠敤瑙嗗浘鐨勪唬鐮?br />
聽
鍙紶閫掗渶瑕佺殑淇℃伅緇欒鍥炬槸涓涓瘮杈冨ソ鐨勫仛娉曪紝鑰屽敖閲忓皯浣跨敤ModelLocator榪欐牱鐨勫叏灞鍙橀噺錛岃繖鏍蜂篃浣跨敤瑙嗗浘閲嶇敤鎬ф洿楂樸?br />