July, 2006 > 所有文章列表
這是 Adobe Dev Center 最新出現的四篇文章,主要說明關於 RPC, FDS 與程式架構,非常值得一讀。
http://www.adobe.com/devnet/flex/articles/architecting_rias.html
http://www.adobe.com/devnet/flex/articles/refactoring_flex.html
http://www.adobe.com/devnet/flex/articles/intro_fms.html
http://www.adobe.com/devnet/flex/articles/rpc_service.html
其中關於 RPC (SOA架構) 與 FDS (Data Management/Messaging)的比較特別值得一探究境,將來設計專案架構時可參考使用。
下面這兩段頗有趣:
AMF 3 uses a more compact encoding format and reduces redundant information by serializing commonly occurring class descriptions and strings by reference. NetConnection (and hence the AMFChannel) uses AMF 3 by default
所以這代表 AMF3不但可支援 AS3 裏許多新出現的 Type (例如 int),在序列化上做法也比較精簡,所以體積更小,傳起來速度就更快了,嗯,何時能見到 AMFPHP 與 OpenAMF 支援這個咧?
Custom serialization and flash.utils.IExternalizable
Instances that implement flash.utils.IExternalizable are serialized according to the implementation of the readExternal and writeExternal methods
這代表 Flash Player 開始有能力處理複雜的資料型態,例如我一直很想將 ByteArray 用某種自訂的方式序列化後透過 AMF (Flash Remoting)傳回server,這樣裏面就可以放很多有趣的東西,應用範圍也更廣。
| by admin
晚上教課回來,在信箱裏又看到兩封留言,其中一封充滿情緒性字眼已直接刪除,另一封則跟技術討論較有關聯,因此公開回應。
======
Author : aladdin (IP: 59.120.38.150 , 59-120-38-150.HINET-IP.hinet.net)
E-mail :
URI :
Comment:
剛剛有人問我你知不知道你錯在哪裡?才想到忘了指教你這個部分......
小字不清楚是誰的問題?是Flex的compiler的問題嗎?還是Flash Player的問題?Flash 8.0 compile出來的東西就沒有這個問題?這跟用Java還是C++有什麼關係?你到底用過Flex了沒有?
embed的部分,"addChild......"這些敘述,顯示了你連embed這件事都沒有做過。pic可以從一個變數「變身」成為一個constructor?Adobe有這麼不瞭解OO?請去Adobe網站上找一找"flex embed image",被embed之後,到底得到什麼東西?如果你真正追蹤過Flex 1.5的碼,瞭解使用String所可能造成的混亂。你才會有辦法知道var pic:Class是怎麼來的。
======
關於第一點,簡單的說明如下:
1、font 在 compile 的過程中,會經過 compiler 一個 transcoding 的動作,將字型包進 swf 中,在Flash 8 中,有新增的 FlashType 字型技術(精確的講,是內建 FlashType transcoding engine),因此 Flash compiler 可以很漂亮的將字型包進 swf,將來在 Flash Player 中播放時,透過 player 內建的 FlashType engine 就可以將精美的字型顯示出來。
但在 FB2中,compiler 是用 java 重新寫過,當時(2006年4月)已經沒有時間將 FlashType engine 做進去,據瞭解如果要用 java 改寫這個 engine 至少要拖累上市時間六個月,這是 Adobe 不願意見到的事,因此在取得其它 workaround後就正式暫停此事,待下一版再解決。
也因此,當我說 code base 時,指的就是兩個 compiler 間的不同,flash compiler是用 C++寫成,並且有現成的 FlashType engine,而 FB2 mxmlc 是用 java 寫成,來不及port engine進去。
2、如果要在 FB2 正式版中使用 FlashType 也還是做的到,在 Flex 2 Developer's Guide 裏面的 Embedding FlashType fonts 一章中有詳細介紹。
簡單來說,就是在 Flash 8裏透過 embed 的方式先做好 font swf,然後籍由 Flash Compiler 將字型包進 swf,再將這個 font swf 提供給 Flex 使用,這樣就可以解決 Flex mxmlc 無內建 FlashType engine 的缺憾。
3、由以上兩點說明,正式的回答你的問題:
是的,這是 Flex Compiler 的問題
不,這不是 Flash Player 的問題
是的,這跟用 Java 或 C++ 很有關係,因為 FlashType engine不會憑空出現
是的,我一天平均使用FB2開發專案超過十小時,從去年十月起到現在一直如此;目前已開發五個Flex 2元件,包含 TreeGrid 與 ResizePanel 並完成國內外共四個中型專案,因此我想我是符合有使用過 Flex 2 的標準。
關於第二點
我想你是將我講的東西誤會成 Flex 1.5了。在Flex 2 正確 embed 圖片的用法請參考手冊
Embedding JPEG, GIF, and PNG images
正確的embed 語法如下:
Actionscript:
-
[Embed(source="logo.gif")]
-
public var imgCls:Class;
-
var imgObj:BitmapAsset = new imgCls() as BitmapAsset;
-
myImage.source=imgObj;
上例是透過 mx:Image 元件將圖片附加到 Display List 上。
如果不使用 mx:Image 而要直接加入的話,語法如下:
Actionscript:
-
[Embed(source="logo.gif")]
-
public var imgCls:Class;
-
var imgObj:BitmapAsset = new imgCls() as BitmapAsset;
-
var u:UIComponent = new UIComponent();
-
u.addChild( imgObj );
-
this.addChild( u );
其中要注意是由於 Mxml Application 只能接受 UIComponent 與 IUIComponent 兩種 type 的 child 加入Display List,因此必需建一個 UIComponent ( u ) 將 image 先加到 u 身上,再將 u 加到 application身上,這是一個變通做法,雖不方便,至也能解決問題。
在不久的將來,等 Flash 9 正式上市後(不是現在 labs 上的 Blaze alpha),可以直接在 Flash 9 輸出 swc 檔,也就可以很方便的在 Flex 2 中匯入 swc 並建立其中的物件,例如:
在 swc 中有一個圖片,名稱為 myImage,將來在 Flex 2中只要用下列方法即可取用。
var img:Sprite = new myImage()
因此,在那篇文章中,我指的即是非常期待 Flash 9的問市,至可惜的是目前 labs 上的 Blaze preview版還是將 export swc disable掉而無法使用,因此只能繼續等待。
後話
致這位留言的朋友,雖然與你素不相識,如果日後有相關技術問題,仍然歡迎隨時前來交流、切磋與討論,但如果你繼續用這樣的態度與語氣發言,日後我將直接刪除留言並且不樂於與你有任何互動,請繼續留在你的園地裏發展也請不要再打擾我。
| by admin
剛運動回來看到信箱裏多了兩則留言(本來看今天沒什麼太陽應該頗適合外出,結果剛到河堤雲就散掉好險風還挺大,不然就曬成人乾了 o.o" ),通常廣告信、無意義或謾罵的留言我都會直接刪除,但這位朋友留言的態度非常有趣,所以特別保留並貼出來可受公評。
=============
留言一
Author : aladdin (IP: 59.120.38.150 , 59-120-38-150.HINET-IP.hinet.net)
E-mail :
URI :
Comment:
原來 Flex 與 Flash 完全是根基於不同的 codebase, 前者是用 java,而後者是 C++......
看到這裡,我差點又把我喝到一半的可樂噴出來了......
想做RIA教主,你還得拼很久勒......
=============
留言二
Author : aladdin (IP: 59.120.38.150 , 59-120-38-150.HINET-IP.hinet.net)
E-mail :
URI :
Comment:
[Embed(source=”xxx.png”)]
var pic:Class
var mypic:Class = new pic();
addChild(mypic);
哈哈哈!這樣的程式曾經可以執行過嗎?
=============
這兩篇留言有趣的地方有幾點:
1、發言者的態度非常不健康,完全沒有真心討論技術或交換學習心得的感覺。
2、發言者只單方面提出嘲諷的批評,卻沒有留下他的想法或認為正確的做法。
本來技術之路就是互相吐槽求進步,批評也無可厚非,但在批評的背後,應該有更建設性的發言,例如提供新的想法或其它的解決方案,而不是這樣丟了一堆不負責任的意見後就閃人消失。
可惜的是這樣的心態在中文世界的討論區似乎習以為常,這也是為何我很少有意願參與國內任何一個 adobe 相關技術forum的討論,而很遺憾的,這次發言的朋友應該也是來自這個forum的成員之一。
比較慶幸的是,最近在大陸發現兩個品質頗佳的flex相關技術forum,一個是 riacn 另一個是 anyflex,我正認真考慮將來在這兩個forum上經常性的回答問題並提供技術協助。
但這次為什麼要將兩則留言貼出來呢?主要的目地是:
希望其它肯賞臉拜訪這個blog的網友借鏡,如果是真心討論、分享或求教技術,歡迎儘量交流,但類似這樣謾罵/無建設性的留言下次將會直接刪除,請不要浪費時間讓自已難堪了。
最後,還是認真回一下這位朋友的留言。
Flex 與 Flash 完全是根基於不同的 codebase 這句話,是指 Flex Builder 2 這個 editor 是從 Eclipse 改寫而來,而它的 code base 當然是以java為主,至於Flash 這個 editor它本身是用 C++寫成,因此許多 Flash 裏既有的功能是無法直接移植到 FB2上的,這點是我親自問過 Flex Framework 工程師後得到的答案,我相信它的正確度頗高。
至於這兩段code:
var mypic:Class = new pic();
addChild(mypic);
它是快速示意的 pseudo code,我想這位朋友指的應該是 Flex Application的addChild 只能接受 UIComponent 或 IUIComponent 兩種物件型態,因此在 pseudo code中直接將 mypic:Class 用 addChild() 加到 DisplayList 是會出錯的。
我相信這位朋友能指出這個錯誤,代表他是知道正確做法的,真希望當時他是用健康的心態留下這段回答,這樣大家可以多交一個朋友,又何樂不為呢?
| by admin
今年共分八個 Track,每個 Track 下有十數場 session,列表在這裏。
當然我最感興趣的是 Rich Internet Applications這個 Track。
不過或許是接觸 FB2 已經有將近九個月的時間,所以大部份 session 都已經很熟悉,不是很有動力想聽,下面是幾場我覺得比較有興趣的。
o Techniques for Delivering Modular Flex Applications
關注重點:這場特別的重要,如果是 Roger 桑親自上陣就更是非聽不可,聽完還要扒者他問到天昏地暗才算回本。這場主要聽如何將 flex app 切成一塊塊的 portlet 然後動態載入,以及app運作階段如何共用同一份 code library。
o Advanced Apollo Application Development
關注重點:十月時Apollo 可能已有 Alpha 版可用,產品也大致成型,因此可觀察這個 runtime將如何與 win32 API互動,能提供的功能有那些。
o Building Custom Components
關注重點: Component 製作是一個永遠也講不完的題目,尤其在 Flex 2 全新的 framework 架構,設計元件有太多需要的注意的技巧與知識,所以多聽無妨,實際上我也很想開個 30hrs 專教 FB2 component design 的課啊~
o Tips and Tricks for Delivering More Responsive Flex Applications
o Techniques for Integrating Flex Applications and Flash Content
o Increasing Efficiency and Quality with Flex Automation
o Flex Under the Hood: A Tour Through the Flex Architecture
o Developing Apollo Applications with HTML/JavaScript and AJAX
相關資訊:
-9/25前報名特價 US$1,095
-Max 簽約飯店 The Venetian Hotel 一晚 $219 外加 9%稅
據 Vegas 當地的朋友告知,一般 clean & safe 的 Hotel 約一百美元左右即可,距離也不會太遠,是不錯的選擇。
所以接下來的 action plan 是:
1、判斷未來三個月工作情況是否有足夠時間前往
2、預訂機票、旅館
3、租車會後前後SF 訪友兼開會
有興趣想去玩的朋友歡迎組團一起前往,我可提供免費翻譯與技術支援(笑)。
| by admin

這就是 Apollo 的系統架構圖,下面這句則是最精簡的解釋:
Apollo Framework is built on top of Flex Framework.
目前看起來,就是一個超大型 container,然後 html/swf/pdf 間可 cross-scripting.
完整pdf下載
| by admin
Next Posts
Previous Posts