锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲午夜精品一区二区麻豆,亚洲精品成人久久久,亚洲a级成人片在线观看http://m.tkk7.com/19851985lili/category/19815.html鈽淕ivE mE HapPy 鈽? zh-cnSat, 03 Mar 2007 03:19:57 GMTSat, 03 Mar 2007 03:19:57 GMT60Flex涓嚜瀹氫箟浜嬩歡http://m.tkk7.com/19851985lili/articles/101171.html鈽溾櫏鈽濵engChuChen鈽溾櫏鈽濵engChuChenWed, 28 Feb 2007 09:00:00 GMThttp://m.tkk7.com/19851985lili/articles/101171.htmlhttp://m.tkk7.com/19851985lili/comments/101171.htmlhttp://m.tkk7.com/19851985lili/articles/101171.html#Feedback0http://m.tkk7.com/19851985lili/comments/commentRss/101171.htmlhttp://m.tkk7.com/19851985lili/services/trackbacks/101171.htmlFlex涓殑浜嬩歡鏈哄埗
2006-11-28 10:37
涓. 浜嬩歡綆浠?
浜嬩歡鍙互鐢卞璁捐Е鍙? 姣斿:閿洏,榧犳爣, 涔熷彲鑳芥槸澶栭儴杈撳叆, 姣斿:web service鐨勮繑鍥?
浜嬩歡榪樿兘鐢辯粍浠剁殑澶栬鍜岀敓鍛藉懆鏈熷彂鐢熷彉鍖栨椂瑙﹀彂, 姣斿:緇勪歡鐨勫垱寤烘垨鑰呮敼鍙樺ぇ灝?
鎵鏈夌敤鎴蜂笌搴旂敤浜や簰閮戒細浜х敓浜嬩歡.鐢ㄦ埛娌℃湁鐩存帴涓庡簲鐢ㄤ氦浜掍篃鍙兘浜х敓浜嬩歡, 姣斿:鏁版嵁瑁呰澆瀹屾瘯.
浣犲彲浠ュ湪紼嬪簭涓嬌鐢ㄤ簨浠剁洃鍚櫒鐩戝惉榪欎簺浜嬩歡. 浜嬩歡鐩戝惉鍣ㄦ槸鍑芥暟鏂規硶鐢ㄤ簬鍝嶅簲鎸囧畾鐨勪簨浠? 鏈夋椂涔熺О涔嬩負浜嬩歡澶勭悊鍣?
Flex鐨勪簨浠舵ā鍨嬪熀浜嶥OM3浜嬩歡妯″瀷.
緇勪歡浜х敓媧懼彂浜嬩歡騫舵秷璐?鐩戝惉)鍏朵粬浜嬩歡.濡傛灉涓涓璞℃兂瑕佷簡瑙e叾浠栧璞′簨浠剁殑淇℃伅, 鍙互娉ㄥ唽涓涓洃鍚櫒.
褰撲簨浠跺彂鐢熸椂,瀵硅薄媧懼彂姝や簨浠跺埌鎵鏈夋敞鍐岃繃鐨勭洃鍚櫒涓?
緇勪歡鏈塅lex鎻愪緵鐨勫唴寤轟簨浠? 涔熷彲浠ヤ嬌鐢ㄦ淳鍙?鐩戝惉妯″瀷瀹氫箟鑷繁鐨勪簨浠剁洃鍚櫒, 騫舵寚瀹氱洃鍚櫒鐩戝惉浣曠浜嬩歡.
浜? 浜嬩歡嫻佺畝浠?
褰撲竴涓簨浠惰媧懼彂鍑烘潵鏃? 浜嬩歡瀵硅薄浠庢牴鑺傜偣寮濮嬭嚜涓婅屼笅寮濮嬫壂鎻廳isplay list, 涓鐩村埌鐩爣瀵硅薄, 媯鏌ユ瘡涓妭鐐規槸鍚︽湁鐩稿簲鐨勭洃鍚櫒.
鐩爣瀵硅薄鎸囩殑鏄痙isplay list涓駭鐢熶簨浠剁殑瀵硅薄. 姣斿:
<mx:Panel>
<mx:HBox>
<mx:VBox>
<mx:Button />
</mx:VBox>
</mx:HBox>
</mx:Panel>
濡備綍姝ゆ椂 resize浜哣Box, 鍒欎細浠庢牴(Application)寮濮? 涓嬫潵媯鏌anel, HBox, 鐩村埌鐩爣瀵硅薄-浜х敓resize浜嬩歡鐨刅Box涓烘.

涓? 浜嬩歡鐨勬淳鍙?
Flex涓彲浠ラ氳繃dispatchEvent()鏂規硶鎵嬪伐媧懼彂浜嬩歡, 鎵鏈塙IComponent鐨勫瓙綾婚兘鍙互璋冪敤姝ゆ柟娉?
璇硶:
objectInstance.dispatchEvent(new Event("event_type"):Boolean
鍙傛暟event_type鏄疎vent瀵硅薄鐨則ype灞炴? 鍑芥暟鐨勮繑鍥炲兼繪槸True.
鍙互浣跨敤姝ゆ柟娉曟淳鍙戜換鎰忎簨浠? 鑰屼笉浠呬粎鏄敤鎴瘋嚜瀹氫箟浜嬩歡, 姣斿: 鍙互媧懼彂涓涓狟utton鐨凜lick浜嬩歡.
var result:Boolean = buttonInstance.dispatchEvent(new Event(MouseEvent.CLICK));

鍦‵lex搴旂敤涓笉鏄繀欏誨鏂版淳鍙戠殑浜嬩歡榪涜澶勭悊, 濡傛灉瑙﹀彂浜嗕竴涓簨浠? 鑰屾病鏈夊搴旂殑Listener鏃?Flex蹇界暐姝や簨浠?
濡傛灉鎯崇粰Event瀵硅薄娣誨姞鏂板睘鎬? 灝卞繀欏葷戶鎵縀vent綾?鐒跺悗瀹氫箟鏂板睘鎬?

鍥?浜嬩歡鐨勪紶鎾?
浜嬩歡瑙﹀彂鍚? Flex鏈?涓嫻嬩簨浠剁洃鍚櫒鐨勯樁孌? 3涓樁孌電殑鍙戠敓鐨勯『搴忓涓?
1. 鎹曡幏
2. 鐩爣
3. 涓婃誕
鍦ㄤ換鎰忎竴涓樁孌? 鑺傜偣浠兘鏈夋満浼氭搷浣滀簨浠? 姣斿: 鐢ㄦ埛鐐瑰嚮浜嗕竴涓湪VBox涓殑Button,
鍦ㄦ崟鑾烽樁孌? Flex媯鏌pplication瀵硅薄(鏍硅妭鐐?鍜孷Box鏄惁鏈夌洃鍚櫒澶勭悊姝や簨浠? Flex鐒跺悗鍦ㄧ洰鏍囬樁孌佃Е鍙戞寜閽殑鐩戝惉鍣?
鍦ㄤ笂嫻樁孌? VBox鍜屽簲鐢ㄤ互涓庢崟鑾烽樁孌電浉鍙嶇殑欏哄簭鍐嶆鑾峰緱鏈轟細澶勭悊浜嬩歡.
鍦ˋctionscript3.0涓?浣犲彲浠ュ湪浠繪剰鐩爣鑺傜偣涓婃敞鍐屼簨浠剁洃鍚櫒. 浣嗘槸閮ㄥ垎浜嬩歡浼氳鐩存帴浼犵粰鐩爣鑺傜偣,姣斿Socket綾?
鎹曡幏闃舵鐨勮妭鐐歸『搴忔槸浠庣埗鑺傜偣鍒板瓙鑺傜偣鐨? 鑰屼笂嫻樁孌靛垰濂界浉鍙?
鎹曡幏浜嬩歡緙虹渷鏄叧闂殑,涔熷氨鏄濡傛灉瑕佹崟鑾蜂簨浠? 蹇呴』鏄懼紡鎸囧畾鍦ㄦ崟鑾烽樁孌佃繘琛屽鐞?
姣忎竴涓狤vent閮芥湁target鍜宑urrentTarget灞炴? 甯姪璺熻釜浜嬩歡浼犳挱鐨勮繃紼?

鎹曡幏闃舵:
鍦ㄦ崟鑾烽樁孌?Flex鍦ㄦ樉紺哄垪琛ㄤ腑媯鏌ヤ簨浠剁殑紲栧厛鏄惁娉ㄥ唽浜嗕簨浠剁殑鐩戝惉鍣? Flex浠庢牴鑺傜偣寮濮嬮『搴忚屼笅.
澶у鏁版儏鍐典腑, 鏍硅妭鐐規槸Application瀵硅薄. 鍚屾椂, Flex鏀瑰彉浜嬩歡鐨刢urrentTarget鍊?
緙虹渷鎯呭喌涓? 鍦ㄦ闃舵,娌℃湁瀹瑰櫒鐩戝惉浜嬩歡. use_capture鍙傛暟鐨勫兼槸False,鍦ㄦ闃舵娣誨姞鐩戝惉鐨勫敮涓鏂規硶鏄湪璋冪敤add_listener鏃?
浼犲叆涓涓負True鍊肩殑use_capture鍙傛暟, 姣斿:
myAccordion.addEventListener(MouseEvent.MOUSE_DOWN, customLogEvent, true);
濡傛灉鏄湪Mxml涓坊鍔犵洃鍚? Flex璁劇疆姝ゅ弬鏁頒負False, 娌℃湁鍔炴硶榪涜淇敼.
濡傛灉璁劇疆浜唘se_capture涓篢rue, 閭d箞浜嬩歡灝嗕笉浼氫笂嫻? 濡傛灉鏃㈡兂鎹曡幏鍙堟兂涓婃誕灝卞繀欏昏皟鐢?addEventListener涓ゆ.
涓嬈se_capture鍙傛暟涓簍rue, 涓嬈′負false;
鎹曡幏寰堝皯浣跨敤, 涓婃誕鐨勪嬌鐢ㄦ洿涓烘櫘閬?

鐩爣闃舵:
鍦ㄧ洰鏍囬樁孌? Flex嬋鍙戜簨浠剁殑鐩戝惉紼嬪簭, 涓嶆鏌ュ叾浠栫殑鑺傜偣.

涓婃誕闃舵:
浜嬩歡鍙湪bubbles灞炴т負True鏃舵墠榪涜涓婃誕. 鍙互涓婃誕鐨勪簨浠跺寘鎷? change, click, doubleClick, keyDown, keyUp, mouseDown, mouseUp.
鍦ㄤ笂嫻樁孌? Flex鏀瑰彉浜嬩歡鐨刢urrentTarget灞炴? 鑰宼arget灞炴ф槸鍒濆媧懼彂浜嬩歡鐨勫璞?

鏌ヨ浜嬩歡闃舵:
浣跨敤浜嬩歡鐨別ventPhase鍙互鑾峰緱浜嬩歡褰撳墠鐨勯樁孌?
1: CAPTURE_PHASE
2: AT_TARGET
3: BUBBLING_PHASE
紺轟緥: private function determineState(event:MouseEvent):Void { Debug.trace(event.eventPhase + ":" + event.currentTarget.id); }

鍋滄浼犳挱:
浣跨敤涓嬮潰涓や釜鍑芥暟鍋滄浜嬩歡鐨勪紶鎾?
stopPropagation()
stopImmediatePropagation()

浠舵槸涓涓潪甯告湁鐢ㄧ殑鍔熻兘錛岄氬父鐢ㄤ簬淇℃伅浼犻掍氦浜掑ぇ澶ф彁楂樼▼搴忕紪鍐欑殑鐏墊椿鎬с傚湪楂樼駭璇█涓兘浼氶泦鎴愯繖鏂歸潰鐗規э紱Flex涔熶笉渚嬪鍑犱箮鎵鏈夋帶浠朵腑閮介泦鎴愪簡澶ч噺鐨勪簨浠訛紝濡傛灉Button鐨凜lick浜嬩歡絳夈備絾瀹為檯搴旂敤涓帶浠惰嚜鏈夌殑浜嬩歡鏄笉鑳芥弧鐪熷疄闇瑕佺殑錛岀壒鍒湪鑷繁緙栧啓鑷畾涔夋帶浠舵椂錛岃嚜瀹氫箟鎺т歡鍐呴儴淇℃伅鐨勬敼鍙樺浣曞強鏃墮氱煡鎵鍦ㄧ殑瀹瑰櫒鍙樺緱寰堟洿瑕侊紱榪欎釜鏃跺欒嚜瀹氫箟浜嬩歡灝辮搗鍒板畠鐨勪綔鐢ㄣ?br />
聽 聽聽 聽 鍦‵lex涓畾涔変簨浠舵湁涓や腑鎯呭喌錛屽垎鍒槸ActionScript鍜孧XML涓畾涔夈?br />
聽 聽聽 聽 鍦ˋctionScript涓畾涔夛細

[Event(name="myEnableEvent", type="flash.events.Event")]

public class MyComponent extends UIComponent

{

聽 聽聽 聽聽 聽聽聽...

}
鍦∕XML涓畾涔夛細

<mx:Metadata>

聽 聽 [Event(name="DataChange", type="DataChangeEvent")]

</mx:Metadata>
DataChangeEvent浜嬩歡鍙傛暟鐨勫畾涔夛細

import flash.events.Event;

public class DataChangeEvent extends flash.events.Event

{

聽 聽聽 聽 public function DataChangeEvent()

聽 聽聽 聽 {

聽 聽聽 聽聽 聽聽 聽聽聽super("DataChange");

聽 聽聽 聽 }

聽 聽聽 聽 public var Data:Object;

}

鍦ㄨ嚜瀹氫箟鎺т歡涓畾涔夊拰瑙﹀彂浜嬩歡:

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

<mx:Form xmlns:mx="http://www.adobe.com/2006/mxml" width="212" height="56">

<mx:Metadata>

聽 聽聽 聽聽聽[Event(name="DataChange", type="DataChangeEvent")]

聽 聽 </mx:Metadata>

<mx:Button label="Button" click="Change()"/>

聽 聽聽 聽 <mx:Script>

聽 聽聽 聽聽 聽聽 聽聽聽<![CDATA[

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽function Change():void

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽{

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽 this.dispatchEvent(new DataChangeEvent());

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽}

聽 聽聽 聽聽 聽聽 聽聽聽]]>

聽 聽聽 聽 </mx:Script>

</mx:Form>
瀹瑰櫒鎺ユ敹鐩稿叧鑷畾涔夋帶浠朵簨浠訛細

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

聽 聽聽 聽

聽 聽聽 聽 <ns1:EmployeeCombo x="146" y="132" DataChange="onChange(event)" >

聽 聽聽 聽 </ns1:EmployeeCombo>

聽 聽聽 聽 <mx:Script>

聽 聽聽 聽聽 聽聽 聽聽聽<![CDATA[

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽import mx.controls.Alert;

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽function onChange(e:DataChangeEvent)

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽{

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽

聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽聽 聽}

聽 聽聽 聽聽 聽聽 聽聽聽]]>

聽 聽聽 聽 </mx:Script>

</mx:Application>
鍏跺疄鑷畾涔変簨浠剁殑鐜板疄涔熷緢綆鍗?浣嗚搗鐫闈炲父閲嶈鐨勪綔鐢紱姝f槸鍥犱負鏈変簡浜嬩歡鐨勬満鍒訛紝浣垮緱澶ч儴鍒嗛噸澶嶇殑鍔熻兘鎶藉彇鍒拌嚜瀹氫箟鎺т歡涓紝浠庤岃揪鍒頒竴涓緢楂樼殑浠g爜閲嶇敤鎬с?img src ="http://m.tkk7.com/19851985lili/aggbug/101171.html" width = "1" height = "1" />

鈽溾櫏鈽濵engChuChen 2007-02-28 17:00 鍙戣〃璇勮
]]>
鏋舵瀯涓涓狥lex搴旂敤紼嬪簭http://m.tkk7.com/19851985lili/articles/101169.html鈽溾櫏鈽濵engChuChen鈽溾櫏鈽濵engChuChenWed, 28 Feb 2007 08:55:00 GMThttp://m.tkk7.com/19851985lili/articles/101169.htmlhttp://m.tkk7.com/19851985lili/comments/101169.htmlhttp://m.tkk7.com/19851985lili/articles/101169.html#Feedback0http://m.tkk7.com/19851985lili/comments/commentRss/101169.htmlhttp://m.tkk7.com/19851985lili/services/trackbacks/101169.html鏋舵瀯涓涓?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Flex搴旂敤紼嬪簭

浣跨敤Flex鐨剋eb寮鍙戣呭彲鑳芥渶鍒濅細瀵圭敤鎴風晫闈㈡ā鍨嬫劅鍒板洶鎯戙傝櫧鐒朵紶緇熺殑銆佺被浼約ervlet鐨勩佽姹?鍝嶅簲錛坮equest-response錛夋ā鍨嬪皢浼氬湪Flex涓簲鐢紝浣嗘槸鍗村瓨鍦ㄤ竴縐嶆洿濂界殑鏂規硶銆傜敱浜嶢ctionScript璇█涓殑鈥淸Binding]鈥濇爣絳撅紝浣犲彲浠ユ妸浣犵殑瑙嗗浘緇戝畾鍒版ā鍨嬫暟鎹紝榪欐牱涓鏉ユā鍨嬬殑鏇存敼灝變細鑷姩褰卞搷鍒拌鍥俱?a target="_blank" tip="">Cairngorm 寰瀷鏋舵瀯浣胯繖縐嶆柟娉曞緱鍒板艦寮忓寲錛岃屼笖瀹冧篃鏄偅浜涙兂瑕侀浼氬浣曗滆瀹冧滑鍦ㄤ竴璧峰伐浣溾濈殑寮鍙戣呯殑涓涓潪甯稿ソ鐨勮搗鐐廣傚湪榪欑瘒鏂囩珷涓垜灝嗘弿榪板彉閲忕粦瀹氾紝鐗規ч┍鍔ㄥ紑鍙戝拰Carigorm鍦?a target="_blank" tip="">NoteTag涓槸濡備綍涓璧峰伐浣滅殑

榪欓噷鏄竴涓吀鍨嬬殑Flex搴旂敤紼嬪簭鍙兘鐨勬灦鏋勶細


鍩燂紙Domain錛?br />路緇勬垚鍩熸ā鍨嬬殑鎵鏈夌被銆傚湪NoteTag涓紝瀹冨寘鍚簡Notes錛堣褰曪級錛孴asks錛堜簨鍔★級浠ュ強Subscriptions錛堣闃咃級錛圫ubscriptions鏄浉鍏砃otes鎴朤asks鐨勪竴涓兢闆嗭紙collection錛夛級銆?br />
妯″瀷錛圡odel錛?br />路涓涓繚瀛樺煙妯″瀷鐨勫彲緇戝畾瀹炰緥鐨勪竴涓崟浣擄紙singleton錛夈傚湪NoteTag涓紝ModeLocator鍗曚綋淇濆瓨浜嗙敤鎴風殑璁㈤槄娓呭崟錛岀敤鎴風殑榪炴帴錛屽綋鍓嶇殑璁㈤槄錛屽綋鍓嶇殑璁板綍浠ュ強鍏朵粬銆?br />
瑙嗗浘錛圴iew錛?br />路UI緇勪歡錛堥氬父鏉ヨ灝辨槸MXML鏂囦歡錛岃櫧鐒跺茍涓嶆繪槸錛夈備緷璧栫姸鎬侊紙state-dependent錛夌殑UI緇勪歡琚粦瀹氬埌ModeLocator鐨勫疄渚嬪彉閲忋傚鏋淢odeLocator涓暟鎹鏍囪涓衡淸Bindable]鈥濓紝閭d箞瀹冪殑浠諱綍鏀瑰彉閮戒細瀵艱嚧UI鑷姩鏇存柊銆侼oteTag涓殑涓涓緥瀛愬氨鏄疦oteListView錛屽畠鏄劇ず浜嗗綋鍓嶈闃呬腑鐨勮褰曞垪琛ㄣ傚鏋滃綋鍓嶇殑璁㈤槄鎴栬呭畠鐨勪換浣曚竴涓褰曟敼鍙樹簡錛岄偅涔圢oteListView灝嗕細鑷姩鏇存柊鏉ュ弽搴旇繖浜涙敼鍙樸?br />
鎺у埗鍣紙Controller錛?br />路鍚屼簨浠墮┍鍔ㄧ殑Commands涓鏍鋒墽琛岀壒鎬ф墍闇鐨勪笅閮ㄦ瀯閫犮侼oteTag涓殑渚嬪瓙鍖呮嫭GetSubscriptionCommand, GetNoteCommand 浠ュ強鍏朵粬銆?br />
涓氬姟錛圔usiness錛?br />路瀹屾垚鍩熶腑瀵硅薄鎿嶄綔鐨勪笟鍔¢昏緫綾伙紝緇忓父鍛煎彨榪滅▼鏈嶅姟騫朵笖寮傛榪斿洖緇撴灉銆傚澶ч儴鍒哊oteTag鐨勪笟鍔¢昏緫鏉ヨSubscriptionManager綾繪槸entry point銆?br />
鏈嶅姟錛圫ervice錛?br />路鏈嶅姟灞傦紝淇濆瓨浜嗙敤鏉ュ懠鍙繙紼嬫湇鍔★紙HTTPService,RemoteService鍜學ebService錛夌殑鎵鏈夌被銆侼oteTag 浣跨敤浜嗕竴涓湇鍔″伐鍘傦紙factory錛夌被闆嗗悎錛屽噺杞諱簡瀵圭壒孌婄殑HTTP鏈嶅姟鐨勯儴緗詫紝榪欎簺HTTP鏈嶅姟鏉ヨ嚜榪涜HTTP 鏈嶅姟鍛煎彨鐨勭粍浠躲?br />
澶氭暟搴旂敤紼嬪簭鐗規ч兘鏈変笂闈㈢殑涓浜涙垨鑰呭叏閮ㄧ粨鏋勩備笅闈㈡槸涓涓吀鍨嬬壒鎬х殑宸ヤ綔嫻佺▼錛?br />1.瑙嗗浘錛坴iew錛夊箍鎾竴涓簨浠躲?br />2.鍗曚綋鎺у埗鍣紙controller錛夋敹鍒拌繖涓簨浠訛紝鎶婂畠鏄犲皠鍒扮浉搴旂殑Command錛屽茍涓旀墽琛岃繖涓狢ommand銆?br />3.Command濮旀墭閫傚綋鐨勪笟鍔★紙Business錛夊璞℃墽琛屼笟鍔¢昏緫銆?br />4.涓氬姟錛圔usiness錛夊璞℃墽琛屼笟鍔¢昏緫錛屽彲鑳藉涓嶅悓鐨凷ervice榪涜涓涓垨鑰呭涓紓姝ュ懠鍙紝騫朵笖閫氳繃鍒嗘淳錛坉ispatch錛変竴涓柊鐨勪簨浠剁粰Command鏉ヨ繑鍥炵粨鏋溿?br />5.Command灝嗙粨鏋滆祴緇欏崟浣撴ā鍨嬨?br />6.緇戝畾鍒板崟浣撴ā鍨嬩腑鐨勬暟鎹殑鎵鏈夎鍥鵑兘鑷姩鏇存柊銆?br />
瀹冩槸濡備綍鍦ㄤ竴涓壒瀹氱殑鐗規т腑宸ヤ綔鐨勫憿錛熷綋鐢ㄦ埛浠嶯otes鍒楄〃錛堢湅涓嬮潰錛屽湪灞忓箷鐨勯《绔級涓変腑浜嗕竴涓狽ote鏃訛紝榪欎釜Note灝變細浠庨傚綋鐨勫瓨鍌紙Blogger鎴朤ypePad錛変腑鍔犺澆騫舵樉紺哄湪緙栬緫鍣ㄤ腑錛堢湅涓嬮潰錛屽湪灞忓箷鐨勫簳绔級錛?br />

1.騫挎挱浜嬩歡

褰撶敤鎴峰湪絎竴涓狽ote涓婄偣鍑繪椂錛孨oteListView鍒嗘淳涓涓簨浠訛紝濡備笅錛?br />
紼嬪簭浠g爜 紼嬪簭浠g爜
// NoteListView.mxml
private function getSelectedEntry(event:ListEvent) : void
{
聽聽var selectedEntry:TagBasedEntry =
聽聽聽聽TagBasedEntry(currentFeed.entries[event.rowIndex-1]);
聽聽Application.application.dispatchEvent(
聽聽聽聽new GetNoteEvent(selectedEntry.metadata,true));
}


2. 瀵逛簨浠剁浉搴?/strong>

鍥犱負NoteTag鐨凢ront Controller宸茬粡鎶婂畠鑷韓娉ㄥ唽鏉ョ洃鍚墍鏈夌殑Command Event錛屽綋GetNoteEvent 琚垎媧劇殑鏃跺欏畠灝嗕細琚氱煡銆?br />
紼嬪簭浠g爜 紼嬪簭浠g爜
// NoteTagController.as
public class NoteTagController extends FrontController
{
聽聽public function NoteTagController()
聽聽{
聽聽聽聽addCommand(LoginEvent.EVENT_LOGIN, LoginCommand);
聽聽聽聽addCommand(GetNoteEvent.EVENT_GET_NOTE, GetNoteCommand);
聽聽聽聽addCommand(GetTaskEvent.EVENT_GET_TASK, GetTaskCommand);
聽聽聽聽addCommand(PostNoteEvent.EVENT_POST_NOTE, PostNoteCommand);
聽聽聽聽// more commands...
聽聽}
}


Cairngorm鐨?Front Controller閫氳繃鎵ц閫傚綋鐨刢ommand鎻愪緵浜嗙洃鍚簨浠跺拰鍝嶅簲浜嬩歡鐨勫熀紜鏋勯犮?br />
3. 鎵ц Command

涓轟簡鑾峰緱榪欎釜Note錛孨oteTag闇瑕佸懠鍙瓨鍌ㄤ簡鐢ㄦ埛note鐨刡log鏈嶅姟鍣ㄣ傚疄鐜頒簡Cairngorm鐨凜ommand鎺ュ彛鐨凣etNoteCommand灝卞儚榪欐牱錛?br />
紼嬪簭浠g爜 紼嬪簭浠g爜
// GetNoteCommand.as
internal class GetNoteCommand extends ChainedCommand
{
聽聽public override function execute(event:CairngormEvent):void
聽聽{
聽聽聽聽var initialEvent:GetNoteEvent = GetNoteEvent(event);

聽聽聽聽var subscriptionManager:SubscriptionManager =
聽聽聽聽聽聽ModelLocator.getInstance().subscriptionManager;

聽聽聽聽setNextEventHandler(subscriptionManager,
聽聽聽聽聽聽handleLoadNote,
聽聽聽聽聽聽LoadNoteEvent.EVENT_LOAD_NOTE,
聽聽聽聽聽聽onSubscriptionFault,
聽聽聽聽聽聽SubscriptionFaultEvent.EVENT_SUBSCRIPTION_FAULT);
聽聽聽聽subscriptionManager.loadNote(initialEvent.metadata);
聽聽}

聽聽private function handleLoadNote(event:LoadNoteEvent):void
聽聽{
聽聽聽聽// handle result here...
聽聽}

聽聽// ...
}


錛堜綘鍙兘宸茬粡鍙戠幇浜咷etNoteCommand 緇ф壙浜?ChainedCommand鈥斺旇繖涓被浣跨敤setNextEventHandler 鏂規硶鍏卞悓榪涜涓緋誨垪寮傛鍛煎彨銆傚湪浠ュ悗鐨勬枃绔犻噷錛屾垜灝嗘洿娣卞叆鍦拌璁篊hainedCommand錛屽茍澶т綋璇翠竴涓嬪紓姝ュ洖搴斿櫒錛坮esponder錛夈傦級

4. 鎵ц涓氬姟閫昏緫

SubscriptionManager閫氳繃鎵ц瀵箃ag鏈嶅姟鍣ㄥ拰blog鏈嶅姟鍣ㄤ竴緋誨垪鐨凥TTP service鍛煎彨鏉ヨЕ鍙慛ote鐨勫姞杞姐傚綋note琚姞杞藉畬姣曟椂錛孲ubscriptionManager 灝嗗垎媧句竴涓狶oadNoteEvent錛岃繖涓簨浠跺皢浼氳GetNoteCommand.handleLoadNote錛堝弬瑙佷笅涓鏉★級瑙﹀彂銆?br />
5. 鏇存柊妯″瀷

GetNoteCommand 閫氳繃鎶婂姞杞界殑Note璧嬬粰ModelLocator涓傚綋鐨勬暟鎹垚鍛樻潵鍝嶅簲浜嬩歡銆?br />
紼嬪簭浠g爜 紼嬪簭浠g爜
// GetNoteCommand.as
internal class GetNoteCommand extends ChainedCommand
{
聽聽// ...

聽聽private function handleLoadNote(event:LoadNoteEvent):void
聽聽{
聽聽聽聽ModelLocator.getInstance().currentNote = event.note;
聽聽}

聽聽// ...
}


6. 鏇存柊瑙嗗浘

浠諱綍緇戝畾鍒癕odelLocator鐨刢urrentNote鎴愬憳鐨勮鍥鵑兘灝嗕細鑷姩鏇存柊鏉ュ弽鏄犳柊鐨勬暟鎹侼oteView錛岃礋璐e湪緙栬緫鍣ㄤ腑鏄劇ずNote鐨勭粍浠訛紝鏄繖鏍風殑涓涓鍥撅細
紼嬪簭浠g爜 紼嬪簭浠g爜
// NoteView.mxml
<mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
聽聽聽聽xmlns:view="com.adobe.kiwi.notetag.view.*"
聽聽聽聽xmlns="*">
聽聽<mx:Script>
聽聽<![CDATA[
聽聽聽聽import com.adobe.kiwi.notetag.model.*;
聽聽聽聽[Bindable] private var model:ModelLocator = ModelLocator.getInstance();
聽聽]]>
聽聽</mx:Script>

聽聽<view:NoteEdit id="noteEditor" width="100%" height="100%"
聽聽聽聽note="{model.currentNote}" />

</mx:VBox>


鎵鏈夌殑鍏跺畠鐗規р斺斿彂甯冧竴涓狽ote錛岃幏寰椾竴涓猄ubscription錛屾洿鏂頒竴涓猅ask鈥斺斾細閫氳繃鍚屾牱鐨凟vent-to-Command-to-Model-to-View閫斿緞鏉ュ疄鐜般侰ommand-specific浜嬩歡鍙互浠庡縐嶅唴瀹逛腑琚垎媧撅紝錛岃屼笉闇瑕佺煡閬撳摢涓涓鍥句細琚獎鍝嶃傝鍥懼彲浠ョ粦瀹氬埌妯″瀷鐨勫彉鍖栬屽茍涓嶉渶瑕佺煡閬撳紩鍙戠殑浜嬩歡鏄粠浠涔堝湴鏂硅鍒嗘淳鐨勩傜敱浜庢澗鑰﹀悎錛屽嚭鐜頒簡鏇存竻媧侊紝鏇村鏄撶淮鎶ょ殑浠g爜銆?br />

]]>
鍦?DataGrid 涓垎欏墊樉紺鴻褰?/title><link>http://m.tkk7.com/19851985lili/articles/100450.html</link><dc:creator>鈽溾櫏鈽濵engChuChen</dc:creator><author>鈽溾櫏鈽濵engChuChen</author><pubDate>Sat, 24 Feb 2007 01:10:00 GMT</pubDate><guid>http://m.tkk7.com/19851985lili/articles/100450.html</guid><wfw:comment>http://m.tkk7.com/19851985lili/comments/100450.html</wfw:comment><comments>http://m.tkk7.com/19851985lili/articles/100450.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/19851985lili/comments/commentRss/100450.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/19851985lili/services/trackbacks/100450.html</trackback:ping><description><![CDATA[<?xml version="1.0" encoding="utf-8"?><br /><mx:Application xmlns:mx="<a target="_blank">http://www.adobe.com/2006/mxml</a>" layout="vertical" creationComplete="initVars()" viewSourceURL="srcview/index.html"><br /><br /><mx:Script><br />聽聽聽聽聽聽聽聽<![CDATA[<br />聽聽聽聽聽聽聽聽聽聽聽聽import mx.rpc.events.ResultEvent;<br />聽聽聽聽聽聽聽聽聽聽聽聽import mx.controls.Alert;<br />聽聽聽聽聽聽聽聽聽聽聽聽import mx.collections.ArrayCollection;<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽//holds all the records in the query returned by the CFC function聽聽聽聽 <br />聽聽聽聽聽聽聽聽private var submissionsAllAryCol:ArrayCollection;<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽//holds all the records in an Array<br />聽聽聽聽聽聽聽聽//so we can use Array methods to <br />聽聽聽聽聽聽聽聽//get a subset of the records for paging<br />聽聽聽聽聽聽聽聽private var submissionsAllAry:Array;<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽//The subset of the records for the current page<br />聽聽聽聽聽聽聽聽private var submissionsSlicedAry:Array;<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽//The subset of the records in the ArrayCollection<br />聽聽聽聽聽聽聽聽//that is the dataprovider for the datagrid<br />聽聽聽聽聽聽聽聽[Bindable]<br />聽聽聽聽聽聽聽聽private var submissionsViewAryCol:ArrayCollection;<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽[Bindable]<br />聽聽聽聽聽聽聽聽private var start:int; //what record to start with on the current page<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽private var increment:int ; //how many records to show per page<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽[Bindable]<br />聽聽聽聽聽聽聽聽private var end:int ; //what record (end-1) to end with on the current page<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽[Bindable]<br />聽聽聽聽聽聽聽聽private var total:int ; //how many total records<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽// initialize the variables and get all submissions<br />聽聽聽聽聽聽聽聽private function initVars():void {<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽//initial start and end positions for slicing the Array<br />聽聽聽聽聽聽聽聽聽聽聽聽start = 0;<br />聽聽聽聽聽聽聽聽聽聽聽聽increment = 10; //how many records to display<br />聽聽聽聽聽聽聽聽聽聽聽聽end = 0;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽 //Call the CFC method to get the submissions聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽 myService.getAllSubmissions(139);<br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽}聽聽//end function initVars()聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽 /*Handles the result returned by calling the getAllSubmissions method<br />聽聽聽聽聽聽聽聽聽聽聽聽of the CFC<br />聽聽聽聽聽聽聽聽聽聽聽聽*/<br />聽聽聽聽聽聽聽聽聽聽聽聽public function handleQueryResult(event:ResultEvent):void{<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//place the query results into an ArrayCollection<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽submissionsAllAryCol = event.result as ArrayCollection;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//convert ArrayCollection to a standard Array<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//so we can use Array slice function<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽submissionsAllAry = submissionsAllAryCol.toArray();<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//how many total submissions?<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽total = submissionsAllAry.length;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//determine initial value for end (cannot exceed total)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if ( total < increment) {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽end = total;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽} else {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽end = increment ;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}//end if<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//take out of the array records start to end (includes records from start to end-1)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽submissionsSlicedAry = submissionsAllAry.slice(start, end);<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//Create an ArrayCollection using the subset of our Array<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//and assign it to the data provider for the datagrid<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽submissionsViewAryCol = new ArrayCollection( submissionsSlicedAry );<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//determine if Next button should be enabled<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//as its possible that the number or records returned<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//is less than our number per page (increment)<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽nextBtn.enabled = isNextBtnEnabled();<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽} //end function<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽/*Get the next increment of records for display in the datagrid<br />聽聽聽聽聽聽聽聽聽聽聽聽*/<br />聽聽聽聽聽聽聽聽聽聽聽聽private function getNext():void {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//going forward so <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//increase start and end by the increment<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽start = start + increment ;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽end = end + increment ;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//don't let the value of end be larger than the<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//total number of records<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if (end > total) {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽end = total;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//create a subset of the Array that is holding all the submissions<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽submissionsSlicedAry = submissionsAllAry.slice(start, end);<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//update the dataprovider for the datagrid<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽submissionsViewAryCol = new ArrayCollection( submissionsSlicedAry );<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//determine if Next button should be enabled<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽nextBtn.enabled = isNextBtnEnabled();<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//enable previous button<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//since we have gone to a next page of records<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽previousBtn.enabled = true;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽}//end getNext<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽 <br />聽聽聽聽聽聽聽聽聽聽 /*Get the previous increment of records for display in the datagrid<br />聽聽聽聽聽聽聽聽聽聽 */<br />聽聽聽聽聽聽聽聽聽聽 private function getPrevious():void {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 //going backwards<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽 end = start;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//decrease start by the increment<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽start = start - increment ;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//create a subset of the Array that is holding all the submissions<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽submissionsSlicedAry = submissionsAllAry.slice(start, end);<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//update the dataprovider for the datagrid<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽submissionsViewAryCol = new ArrayCollection( submissionsSlicedAry );<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//determine if previous button should be enabled<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽previousBtn.enabled = isPreviousBtnEnabled();<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//enable next button<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽//since we have gone to a previous page of records<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽nextBtn.enabled = true;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽}//end getPrevious<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽/*Return true if button should be enabled<br />聽聽聽聽聽聽聽聽聽聽聽聽*/<br />聽聽聽聽聽聽聽聽聽聽聽聽private function isNextBtnEnabled():Boolean {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽var enableBtn:Boolean = false ;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if ( end < total ) {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽enableBtn = true ;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return enableBtn;<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽}//end function isNextBtnEnabled<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽/*Return true if button should be enabled<br />聽聽聽聽聽聽聽聽聽聽聽聽*/<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽private function isPreviousBtnEnabled():Boolean {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽var enableBtn:Boolean = false ;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽if ( start >= increment ) {<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽enableBtn = true ;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽}<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽return enableBtn;<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽}//end function isNextBtnEnabled<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽]]><br /></mx:Script>聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽<!--setup connection to the CFC--><br />聽聽聽聽<mx:RemoteObject<br />聽聽聽聽聽聽聽聽id="myService"<br />聽聽聽聽聽聽聽聽destination="ColdFusion"<br />聽聽聽聽聽聽聽聽source="flex.pagingdatagrid.SubmissionsGateway" <br />聽聽聽聽聽聽聽聽showBusyCursor="true"<br />聽聽聽聽聽聽聽聽>聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<mx:method name="getAllSubmissions" result="handleQueryResult(event)" <br />聽聽聽聽聽聽聽聽聽聽聽聽fault="Alert.show(event.fault.message)"/><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽</mx:RemoteObject> <br />聽聽聽聽<br />聽聽聽聽<!--setup user interface--><br />聽聽聽聽<mx:Panel width="80%" height="80%" layout="vertical" title="Page Through The Submissions" <br />聽聽聽聽聽聽聽聽horizontalAlign="center" verticalAlign="top"><br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽<mx:VBox width="100%" height="100%" verticalAlign="top" horizontalAlign="left"><br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽<mx:Label text="Use the Previous and Next buttons to Get More Submissions"/><br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽<mx:HBox width="100%"><br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<!--this button's enable value will be changed by the getPrevious() and getNext functions--><br />聽聽聽聽聽聽聽聽聽聽聽聽<mx:Button label="Previous" id="previousBtn" enabled="false" <br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽click="getPrevious()"/><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<mx:Spacer width="50%"/><br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<!--must use start+1 since array elements start at array position 0--><br />聽聽聽聽聽聽聽聽聽聽聽聽<mx:Label text="Viewing Submissions {start+1} - {end} of {total} Submissions" /><br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽<mx:Spacer width="50%"/><br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽 <!--this button's enable value will be changed by the getPrevious() and getNext functions--><br />聽聽聽聽聽聽聽聽聽聽聽聽<mx:Button label="Next" id="nextBtn" enabled="true"<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽click="getNext()"/><br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽</mx:HBox><br />聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽<!--The dataProvider will be updated each time the user clicks the next and previous buttons-->聽聽聽聽<br />聽聽聽聽聽聽聽聽<mx:DataGrid width="100%" height="100%" id="submissionsDG" dataProvider="{submissionsViewAryCol}" <br />聽聽聽聽聽聽聽聽聽聽聽聽fontFamily="Verdana" fontSize="10"><br />聽聽聽聽聽聽聽聽聽聽聽聽<mx:columns><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<mx:DataGridColumn dataField="submissionid" width="80" headerText="Sub #"/><br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<mx:DataGridColumn dataField="presenter" width="100" headerText="Main Presenter" /><br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽聽<mx:DataGridColumn dataField="title" width="220" headerText="Title" wordWrap="true"/><br />聽聽聽聽聽聽聽聽聽聽聽聽</mx:columns><br />聽聽聽聽聽聽聽聽</mx:DataGrid><br />聽聽聽聽聽聽聽聽聽聽聽聽<br />聽聽聽聽聽聽聽聽</mx:VBox><br />聽聽聽聽聽聽聽聽<br />聽聽聽聽</mx:Panel><br /><br />聽聽 <!--setup user interface--><br /></mx:Application><img src ="http://m.tkk7.com/19851985lili/aggbug/100450.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/19851985lili/" target="_blank">鈽溾櫏鈽濵engChuChen</a> 2007-02-24 09:10 <a href="http://m.tkk7.com/19851985lili/articles/100450.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title> 濡備綍鍒╃敤 google 鏌ユ壘 Flex 紼嬪簭 http://m.tkk7.com/19851985lili/articles/99131.html鈽溾櫏鈽濵engChuChen鈽溾櫏鈽濵engChuChenSat, 10 Feb 2007 06:01:00 GMThttp://m.tkk7.com/19851985lili/articles/99131.htmlhttp://m.tkk7.com/19851985lili/comments/99131.htmlhttp://m.tkk7.com/19851985lili/articles/99131.html#Feedback0http://m.tkk7.com/19851985lili/comments/commentRss/99131.htmlhttp://m.tkk7.com/19851985lili/services/trackbacks/99131.html鏂規硶錛氭簮浠g爜鍒嗕負 mxml 鍜?as錛岃?mxml 鏂囦歡涓偗瀹氬寘鍚?<mx:Application xmlns:mx="http://www.macromedia.com/2006/mxml"> 榪欏彞璇濓紝鍥犳錛屽彧瑕佸湪鎼滅儲妗嗕腑鎼滅儲鈥渕x Application 2006 filetype:mxml鈥濓紝鎵鏈夌殑 Flex 2 浠g爜涓瑙堟棤浣欍傚鏋滆鎼?as 鏂囦歡鐨勮瘽錛屾悳绱?"import mx filetype:as"錛岃繖涓嵈瀹規槗鎵懼埌涓浜?as2 鐨勬枃浠訛紝緹庝腑涓嶈凍...


]]>
Cairngormhttp://m.tkk7.com/19851985lili/articles/98837.html鈽溾櫏鈽濵engChuChen鈽溾櫏鈽濵engChuChenThu, 08 Feb 2007 10:00:00 GMThttp://m.tkk7.com/19851985lili/articles/98837.htmlhttp://m.tkk7.com/19851985lili/comments/98837.htmlhttp://m.tkk7.com/19851985lili/articles/98837.html#Feedback0http://m.tkk7.com/19851985lili/comments/commentRss/98837.htmlhttp://m.tkk7.com/19851985lili/services/trackbacks/98837.html Cairngorm涓昏灝辨槸瀵瑰紑鍙慒lex搴旂敤紼嬪簭搴旂敤浜嗕竴緋誨垪鐨勮璁℃ā寮忥紝浠庤屼嬌寮鍙戝嚭鏉lex紼嬪簭鍙墿灞曟э紝鍙淮鎶ゆч兘澶уぇ鎻愰珮銆傚叾宸ヤ綔嫻佺▼寰堟竻鏅幫細

1.Front Controller Listens for User Gestures
鍓嶇鐨勬帶浠剁洃鍚敤鎴風殑琛屼負銆傛敞鎰忓畠鍙槸鐩戝惉錛屽茍涓嶄細鍋氫換浣曞弽搴斻?br />
2.Commands Do All the Work
鎺т歡鐩戝惉浠ュ悗璋冪敤Commands鏉ュ仛鐩稿簲鐨勪簨鎯咃紝Command鍋氫簡鎵鏈夊伐浣溿?br />
3.Delegate Server-Side Business Logic to Business Delegates
鎶婃湇鍔″櫒绔殑涓氬姟閫昏緫濮旀墭鍒?Bussiness Delegates涓傚洜涓哄緢澶氭椂鍊檆ommand闇瑕佽幏寰楁湇鍔″櫒绔暟鎹紝鎵浠ヨ繖鏍蜂竴鏉ュ畠鍙互鐩存帴璋冪敤Bussiness Delegates鑰屼笉鐢ㄥ叧娉ㄥ浣曡繛鎺ユ暟鎹殑緇嗚妭錛屽疄鐜頒簡淇℃伅闅愯棌銆?br />
4.Business Delegate Finds Services with the Service Locator
Command璋冪敤Business Delegate 鍚庯紝Business Delegate 閫氳繃Service Locator鏉ユ壘鍒扮浉搴旂殑RPC services錛岀劧鍚庢墽琛屽疄鐜頒粠鏈嶅姟鍣ㄧ鍙栨暟鎹?br />
5.Transfer Data as Value Objects
鎶婁紶杈撹繃鏉ョ殑鏁版嵁瀛樺偍涓篤alue Objects銆傝繖鐐瑰ぇ瀹跺簲璇ラ兘寰堢啛鎮夛紝姣斿鎯寵鏌ヨ涓涓叕鍛婏紝灝卞繀瀹氬垱寤轟竴涓叕鍛婄被錛屾潵瀛樺偍姣忎竴涓叕鍛婄殑鏍囬絳変俊鎭?br />
6.Store State in the Model Locator and Let Model Notify View
鍦∕odel Locator 淇濆瓨鐘舵佸茍涓旇兘浣縈odel媯嫻嬪埌View鐨勫彉鍖栥傝繖鏍蜂竴鏉ョ敤鎴鋒搷浣滃氨鑳界洿鎺ュ獎鍝峂odel錛屾瘮濡傛坊鍔犵墿鍝佸埌璐墿杞︼紝Model涓殑璐墿鍟嗗搧灝變細鑷姩澧炲姞銆?br />

]]>
涓轟粈涔堣閫夋嫨Cairngorm寮鍙戞鏋訛紵http://m.tkk7.com/19851985lili/articles/98310.html鈽溾櫏鈽濵engChuChen鈽溾櫏鈽濵engChuChenTue, 06 Feb 2007 06:55:00 GMThttp://m.tkk7.com/19851985lili/articles/98310.htmlhttp://m.tkk7.com/19851985lili/comments/98310.htmlhttp://m.tkk7.com/19851985lili/articles/98310.html#Feedback0http://m.tkk7.com/19851985lili/comments/commentRss/98310.htmlhttp://m.tkk7.com/19851985lili/services/trackbacks/98310.html

鎴戞槸涓涓狫AVA EE寮鍙戜漢鍛橈紝浠庝笟宸茬粡鏈夎繎涓冦佸叓騫寸殑鏃墮棿浜嗐傚JavaEE鐨勪紒涓氱敤鎴峰紑鍙戞妧鏈鏋舵柟闈㈢殑姣旇緝鐔熸倝銆傚Spring錛孲truts錛學ebwork錛孒ibernate絳夋祦琛岀殑寮婧愭鏋朵篃涓鐩村湪宸ヤ綔涓嬌鐢ㄣ?/p>

鍦ㄧ幇鍦ㄧ殑MVC妗嗘灦涓紝鎴戞瘮杈冨懼悜浜庨噰鐢╓ebWork錛岀伒媧昏交宸truts2鍏跺疄璐ㄥ氨鏄WebWork2鐨勪竴嬈″崌綰э紝榪欎篃璇存槑浜哤ebWork鐩稿涓嶴truts1鐨勪紭鍔挎墍鍦ㄣ傚湪鐜板湪鐨凴IA寮鍙戞垚涓鴻秼鍔夸箣鍚庯紝鍦ㄥ伐浣滀腑涔熶嬌鐢ㄤ簡DWR鍋欰jax鏈嶅姟鍣ㄧ鐨勬暟鎹鐞嗭紝騫墮噰鐢╦s template鐨勮剼鏈鐞嗛〉闈㈡樉紺烘暟鎹紝鍏朵腑鏈澶х殑鐥涜嫤灝辨槸璋冭瘯JavaScript錛屽敖綆℃垜浠嬌鐢ㄤ簡firefox鐨勬彃浠惰皟璇昷avascrpt銆?/p>

姝e鈥?a title="ria" target="_blank">JAVA紼嬪簭鍛樺綋濡備綍閫夋嫨RIA寮鍙戠幆澧?/a>鈥濇墍鎻愬埌ajax鐨勭殑鍏堝ぉ緙洪櫡錛屽茍涓嶉傚悎RIA鐨勫叏搴旂敤寮鍙戯紝濡傛灉鍙槸鍦ㄩ〉闈腑鐨勫眬閮ㄤ嬌鐢ㄦ槸鏈変竴浜涗紭鍔匡紝鏍規嵁鍏蜂綋鎯呭喌閫夋嫨鏈鍚堥傜殑銆?/p>

鍦‵lex鐨勫簲鐢ㄧ▼搴忓紑鍙戝綋涓紝瀛︿範浜嗗緢瀵硅寖渚嬶紝鍩烘湰涓婃祻瑙堜簡涓閬岶lex鐨勫府鍔╂枃妗o紝騫惰嚜宸卞仛浜嗕簺灝忕▼搴忋?/p>

鍏朵腑閬囧埌鏈澶х殑鍥伴毦涓嶆槸鍦ㄧ▼搴忚皟璇曟柟闈紝鑰屼笖紼嬪簭綆$悊鏂歸潰鐨勶紝浠g爜娣蜂貢錛岄毦浠ユ帶鍒訛紝灝ゅ叾鍦ㄥ浜哄紑鍙戠殑鏃跺欙紝鏇村姞瀹規槗鍑虹幇榪欐牱鐨勬儏鍐點傝繖鏍風殑鎯呭喌涓婻IA鐨勫紑鍙戞槸鐥涜嫤鐨勶紝涓嶉傚疁鐨勩?/p>

Cairngorm寮鍙戞鏋惰鐧戒簡灝辨槸涓涓狥LEX搴旂敤寮鍙戠殑MVC妗嗘灦錛堣嚜宸辯殑鎰熻錛夈傚皢Model錛寁iew錛孋ontrol鐙珛鍒嗗紑錛屾竻鏅版槑浜嗐?br />
浠涔堟槸Cairngorm錛?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Cairngorm鏄竴涓氳繃閫昏緫鍔熻兘銆佹暟鎹佺敤鎴瘋鍥懼拰浠g爜鎺у埗鐨勪換浣曚簨鎯呮潵鍒掑垎浣犵殑搴旂敤紼嬪簭浠g爜鐨勫熀紜鏂規硶璁猴紝鍙互鍙仛MVC錛圡odel-View-Control錛夌殑涓縐嶅疄璺墊柟寮忋?/p>

Cairngorm鐨勫垝鍒?/strong>
Model Locator錛堟ā鍨嬪畾浣嶅櫒錛夛細瀛樺偍浣犵殑搴旂敤涓墍鏈夌殑Value Objects錛堟暟鎹級鍜屽叡浜彉閲忓湪涓涓綅緗傚拰Http鐨凷ession瀵硅薄綾諱技錛屽彧鏄畠瀛樺偍鍦‵lex鎺ュ彛鐨勫鎴風鑰屼笉鏄湪涓棿浠跺簲鐢ㄦ湇鍔″櫒鐨勬湇鍔″櫒绔?/p>

View錛堢晫闈級錛?/strong>閫氳繃涓涓垨鑰呭涓狥lex緇勪歡錛堟寜閽侀潰鏉褲佺粍鍚堟銆乀ile絳夌瓑錛夌粍鍚堝湪涓璧風殑涓涓釜鍛藉悕鍗曞厓錛岀粦瀹氭暟鎹湪Model Locator錛堟ā鍨嬪畾浣嶅櫒錛変腑錛屽茍涓斾駭鐢熷熀浜庣敤鎴鋒搷浣滐紙鐐瑰嚮銆佹粴鍔ㄣ佹嫋鎷界瓑錛夌殑鑷畾涔夌殑Cairngorm浜嬩歡銆?/p>

Front Controller錛堝墠绔帶鍒跺櫒錛夛細鎺ユ敹Cairngorm浜嬩歡騫舵槧灝勪粬浠埌Cairngorm鍛戒護鎺у埗鍣ㄤ笂銆?/p>

Command錛堝懡浠ゆ帶鍒跺櫒錛夛細澶勭悊鍟嗕笟閫昏緫錛岃皟鐢–aringorm浠g悊鍜岋紙鎴栵級鍏跺畠鍛戒護銆?/p>

Delegate錛堜唬鐞嗭級錛?/strong>鐢卞懡浠ゅ垱寤猴紝瀹炰緥鍖栬繙紼嬭繃紼嬭皟鐢紙HTTP銆乄eb Service絳夌瓑錛夊茍涓斿鐞嗗懡浠ょ殑榪斿洖緇撴灉鏁版嵁銆?/p>

Service錛堟湇鍔★級錛?/strong>瀹氫箟榪炴帴榪滅▼鏁版嵁瀛樺偍鐨勮繙紼嬭繃紼嬭皟鐢紙HTTP銆乄eb Service絳夌瓑錛夈?br />

鏈夊叧Cairngorm鐨勮祫鏂欙細/P>

Cairngorm 鏄疘teration::two鐨勫紑婧愰」鐩? 鏄嬌鐢╩acromedia Flex鐨凴IA寮鍙戠殑鏈浣?br />瀹炶返(best-practice)妗嗘灦.
鍦?b style="COLOR: black; BACKGROUND-COLOR: #ffff66">Cairngorm鍩虹涓婂紑鍙慠IA, 灝嗕細鍦↖teration::two鐨勪笓瀹朵綋緋誨拰鐜版湁鐨勭伒媧誨彲緇?br />鎶や紒涓氳В鍐蟲柟妗堜腑杈懼埌騫寵 .
Cairngorm鏈韓騫朵笉鏄竴涓畬鏁寸殑浼佷笟搴旂敤, 瀹冨彧鏄彁渚涗簡涓涓紑鍙戠殑楠ㄦ灦, Iteration::two縐?br />涔嬩負浣撶郴.
鍦ㄨ繖涓綋緋諱腑鍖呮嫭浠ヤ笅鍑犱釜閮ㄥ垎:
1. Business(涓氬姟閫昏緫閮ㄥ垎)
2. Command(鍛戒護閮ㄥ垎)
3. Control(鎺у埗閮ㄥ垎)
4. Model(鏁版嵁妯″瀷)
5. View(鐣岄潰瑙嗗浘)
6. VO(ValueObject)

鎴戜滑浠嶤ontrol璇磋搗:
鍦–ontrol涓? 瀹氫箟浜?涓熀綾? Event, EventBroadcaster, FrontController.
Event鐢ㄤ簬鍦ㄥ簲鐢ㄤ笉鍚岀殑灞備箣闂翠紶閫掍簨浠? 騫舵惡甯︿簨浠剁殑鏁版嵁. 鍖呭惈type鍜宒ata涓や釜
鎴愬憳.
type瀛樻斁涓涓尯鍒笉鍚屼簨浠剁殑鍚嶇О,灝嗕細鍦‵rontController涓繘琛屾敞鍐?
鑰屽湪鍛戒護(Command)綾諱腑, 浼氬浜嬩歡榪涜鍝嶅簲.

EventBroadcaster鏄竴涓崟渚嬬被(singleton), 鐢ㄤ簬騫挎挱鐢ㄦ埛鍔ㄤ綔瀵瑰簲鐨勪簨浠? 浣跨敤
鏂規硶: EventBroadcaster.getInstance().broadcastEvent( ... )

FrontController紼嶅井澶嶆潅涓鐐圭偣. 鐢ㄤ簬灝嗙壒瀹氱殑鐢ㄦ埛鍔ㄤ綔鍒嗗彂鍒版寚瀹氱殑鍛戒護綾? 
FrontConroller鏄姹傚鐞嗙殑鏍稿績綾? 鏁翠釜浣撶郴涓亶甯冪殑EventBroadcaster.getInstance(
).broadcastEvent( ... )榪欐牱鐨勮皟鐢?
閮芥槸鐢ㄦ潵閫氱煡鐩戝惉鎺у埗鍣? 鐢ㄦ埛鍙戝嚭浜嗚姹? 鍦ㄥ疄闄呭簲鐢ㄤ腑, 寮鍙戣呭簲璇ョ敓鎴愪竴涓?br />FrontContoller鐨勫瓙綾?
騫跺湪鏋勯犲嚱鏁頒腑璋冪敤addCommand()娉ㄥ唽棰勬湡浜嬩歡鐨勫鐞嗗懡浠? FrontController鐨勫叿
浣撳疄鐜扮被搴旇鍒涘緩涓嬈¤屼笖鍙兘鍒涘緩涓嬈?



http://cairngormdocs.org/

http://labs.adobe.com/wiki/index.php/Cairngorm



]]>
主站蜘蛛池模板: 久久久久亚洲AV无码观看 | 亚洲AV成人精品网站在线播放| 亚洲人成人一区二区三区| 亚洲AV本道一区二区三区四区| 一个人免费视频观看在线www | 国产成人高清精品免费鸭子| 精品亚洲视频在线观看| 中文字幕亚洲色图| 天天影院成人免费观看| 伊人久久亚洲综合影院| 亚洲福利电影一区二区?| 日韩精品视频在线观看免费| 无码人妻精品中文字幕免费| 四虎成人免费影院网址| 亚洲码国产精品高潮在线| 99在线免费视频| 国产精品国产自线拍免费软件| 亚洲成AV人影片在线观看| 毛片免费在线观看| 亚洲国产精品成人综合久久久| 三级黄色片免费看| 波多野结衣久久高清免费| 亚洲欧洲第一a在线观看| 一级毛片大全免费播放下载| 中文字幕av无码无卡免费| 亚洲AV无码乱码在线观看富二代 | 国产亚洲欧美日韩亚洲中文色| 免费视频成人手机在线观看网址| 亚洲AV成人无码久久精品老人| 黄色片在线免费观看| 亚洲一区二区在线免费观看| 国产午夜不卡AV免费| 亚洲伊人色一综合网| 无码人妻AV免费一区二区三区| 亚洲精品福利你懂| 2019中文字幕免费电影在线播放| 国产亚洲一区二区精品| 久久免费香蕉视频| 亚洲av永久无码精品古装片| 性xxxx视频播放免费| 国产99久久久久久免费看|