有趣留言的後續發展
晚上教課回來,在信箱裏又看到兩封留言,其中一封充滿情緒性字眼已直接刪除,另一封則跟技術討論較有關聯,因此公開回應。
======
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 語法如下:
-
[Embed(source="logo.gif")]
-
public var imgCls:Class;
-
var imgObj:BitmapAsset = new imgCls() as BitmapAsset;
-
myImage.source=imgObj;
上例是透過 mx:Image 元件將圖片附加到 Display List 上。
如果不使用 mx:Image 而要直接加入的話,語法如下:
-
[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掉而無法使用,因此只能繼續等待。
後話
致這位留言的朋友,雖然與你素不相識,如果日後有相關技術問題,仍然歡迎隨時前來交流、切磋與討論,但如果你繼續用這樣的態度與語氣發言,日後我將直接刪除留言並且不樂於與你有任何互動,請繼續留在你的園地裏發展也請不要再打擾我。


12 Comments Add your own
1. Rita&hellip | July 13th, 2006 at 9:20 am
沒事更正二個筆誤,
Flash 2 Developer's Guide-->Flex2 Developer's Guide
2007年4月-->原來這裡也有Lake House的故事呀 ^^
2. jeremy&hellip | July 13th, 2006 at 9:47 am
哈 已更正~
希望 2007 年 4月時能見到 Flex 2.5。
3. KEN&hellip | July 13th, 2006 at 11:03 am
回答真是認真呀
(好有耐心喔~ , 我想要對自己的專業很堅持才辦的到吧!)
以往在這裡受教許多
表達一下支持~
4. jeremy&hellip | July 13th, 2006 at 11:11 am
謝謝,真理越辯越明,回答的過程中我也順便再複習一次概念,也算有收獲
5. Dreamer&hellip | July 13th, 2006 at 4:40 pm
建议把留言的author和IP全部取掉,更能说明对事不对人~呵呵~个人意见。
6. jeremy&hellip | July 13th, 2006 at 4:51 pm
發言人應該要對自已的文字負責,因此保留此資訊並無不妥。
7. Lancelot&hellip | July 14th, 2006 at 12:53 pm
d.CAT降降火先...
请教个问题,有什么办法在Serve2003上安装Flash 9 Alpha preview吗?(因为平时开发测试都是在Server 2003上,但是默认执行安装exe不让装,说只能在XP上安装)
8. jeremy&hellip | July 14th, 2006 at 1:44 pm
呃,您太先進啦,我想既然是 alpha preview 大概還沒時間在各平台上做測試吧。
或許可以試試先在xp裝完,再把整個目錄copy到 2003上,說不定可以跑,反正這個版本最重要的就是那個 AS3 compiler,只要能compile 就ok了。
9. Lancelot&hellip | July 14th, 2006 at 4:56 pm
嗯,回去家里XP上试试看,谢谢。
才发现这个blog主人原来不叫d.CAT,见谅见谅 -_-!
10. jeremy&hellip | July 14th, 2006 at 6:12 pm
哈 沒關係啦 別介意
11. 小布&hellip | July 18th, 2006 at 2:01 pm
反擊回覆是必要的,不然真理總被愚笨有心的人給操弄,也或許他不是有意的,只不過大家都是這一行,道行高高低彽,若有實際的作品去觀看,那麼大家一定可以從中比較高下,看看誰才是亂吐口水!
Jeremy,小布認同你的作法!
12. jeremy&hellip | July 18th, 2006 at 2:20 pm
哈哈 小布,謝謝啦~
你們渡完蜜月回來啦?照片記得貼一下網址要給我 ^^
Trackback this post | Subscribe to the comments via RSS Feed