Skip to main content

Posts

Showing posts from January, 2009

[Flex] Cairngorm v.s. pureMVC

跟 Cairngorm and pureMVC 相處過一陣子之後,在這邊與大家分享一下使用它們在 Flex 中的開發經驗(也許有錯誤的理解,請多指正囉!) Cairngorm : 喜歡的部份: 架在 Flex framework 上使用中央 Event (CairngormEventDispatcher )機制,UI 開發簡單 (因為容易理解...) ModelLocator 採用 Flex 綁定機制,UI 顯示資料無煩惱 由於上面兩項,所以使用 Module 開發專案不會很痛苦 討厭的部份: 主要的東西都是 Singleton design pattern, 如果專案很大的話,又統一在一起開發,那個 ModelLocator 到後來應該會很奇怪... 綁太多細節在 UI component 內,如 UI component 一定要認識 ModelLocator 還可以直接操作或修改它...@@ Event 跟 Command 比多的...重點跟 pureMVC 的 command 比起來它的亂多了... 專案越大越亂... pureMVC : 喜歡的部份: 大家的職責切分的很乾淨...棒 (這個只能意會不能言傳啊...XD 快去研究它吧!) 寫在 UI (MXML)內的程式開發起來比使用 Cairngorm 的乾淨好幾倍(因為邏輯層被切分到 Mediator 了) Notification & Command 果然是好物...雖然一開始感覺很囉唆,但是跟它熟了之後發現真是好用... Proxy 比 ModelLocator 更加好用...因為不需要的 Proxy 要清掉也很容易...所以在資料的增減上,pureMVC 架構彈性比較高 簡而言之就是乾淨乾淨乾淨~~~ 討厭的部份: 它的架構比較像仙人一樣超脫於 Flex framework 之上,所以想要整合 Flex 的優點要花點腦袋想(結果這個也是優點...@@) 很多語法都是要繼承並 override 寫起來不夠爽...快,這點 Cairngorm 大量的使用 interface 就棒多了。 由於 Facade 的存在如果要使用 Module 與 MultiCore 版本來開發的話,還需要撰寫連接的元素,或者直接參考 pureMVC網站上的 Utility - AS3 / Pipes 來應用...

[LEGO] How to make an "Unique Random Number" my Block

這篇是答應某人要公開分享的教學...這兩天終於湊出時間來寫... Erin 分享的原則通常都秉持著 "給你魚吃,到不如教你釣魚" 的想法在寫,所以如果沒有附上原始檔也請不用詢問了呦...意思就是我已經提供很多可以讓你"開始學"釣魚的概念囉! 這是去年三月在台北舉辦的 Flex&AIR AUG 網聚上使用的 lotto-bot 中的取得唯一亂數號碼 myBlock,可以用在樂透遊戲或者是亂數只給出現一次的程式應用。它的邏輯很簡單,只是要改成 NXT-G 的 myBlock 花了些時間連連看...XD 開始製作之前請先注意看看你的 NXT-G 有沒有安裝過 Dynamic Block Update ,安裝完成後可以在下拉式功能表中找到 "Block Import and Export Wizard"。接下來請下載及 import Simple Array Block ,在下載的時候請記得點一下畫面中的google AD 感謝 Simple Array 的作者 Steve Hassenplug 提供了很多很棒的NXT-G Blocks 給大家使用。 由於 NXT-G 的變數是全域變數,所以在組合 myBlock 要小心變數命名,取得唯一亂數號碼需要兩個 myBlock ,一個負責初始化相關參數,一個負責輸出唯一號碼: initUniqueRandom myBlock: var uniq_total:Number = total; Simple Array Block : clear Add a value(e.g. 100) to index 0 in Simple Array Block, coz we don't use index 0. If you need it to count from 0, just ignore this step. 如圖: 接下來就麻煩了...很長一串... getUniqueRandom myBlock: 這段要用程式表示囉...不然寫的好累...冏... var Logic 1 : Logic = false; //Logic Switch if(uniq_total == uniq_legth){ //Logic Switch Conditions :

[Flex] pureMVC 練習筆記啪兔

由於 pureMVC Standard and MultiCore 兩個版本寫法幾乎沒啥差別,開發的專案都統一使用彈性比較大的 MultiCore 版本來實作。跟 pureMVC 相處了一陣子後,漸漸地對它也沒有什麼特別的不爽...快,所以 Cairngorm and pureMVC 的選擇,也就由 pureMVC 勝出了(當然是有惡勢力的...冏)。 以下的範例還是使用 pureMVC Standard 來實作喔!這個範例應該能更容易理解 Mediator, Command and Proxy 合作的模式。 1. 由 DataProxy 開始寫 這次的 DataProxy 負責的是將 input textfield 中的文字儲存起來也提供清除的方法。 DataProxy 並不認識任何 Mediator。 package com.mvc.model { import mx.collections.ArrayCollection; import org.puremvc.as3.patterns.proxy.Proxy; public class DataProxy extends Proxy { public static const NAME:String = 'dataProxy'; public static const DATA_UPDATED:String ="data_updated"; public static const SAVE_DATA:String = 'save_data'; public static const CLEAR_DATA:String = 'clear_data'; public function DataProxy() { super(NAME, new ArrayCollection); } public function save(obj:Object):void{ list.addItem(list.length+" : "+obj); sendNotification( DATA_UPDATED, data ); } public function clear():