最近開始測試 Flex 4 (Gumbo),發現它的 MXML Namespace 變的好複雜
看文件上寫的 Flex SDK - MXML 2009
Namespace 至少有以下這幾種
xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/halo" xmlns="http://ns.adobe.com/fxg/2008"
搞到頭都昏了,誰知道哪個組件屬於哪個 Namespace 之下
文件上的範例有的打錯字,有的已經過期了
很多範例直接複製下來都無法編譯過
文件上解釋說明一堆,嘗試半天,還是失敗 ><"
不知道大家研究 Flex 4 Gumbo 時,有沒有類似的困擾啊?
Flex 2, 3 以前從來也沒這麼複雜,一個主版本裡面通常只有一種 Namespace
譬如
xmlns:mx="http://www.adobe.com/2006/mxml"Flex 4 之所以會變成這樣,最主要的原因是想要與 Flex 3 組件相容並且能夠混搭使用
然後又把新增了 FXG、Skinning 功能單獨為個別的 Namespace
聽起來好偉大的功能,不過開發工具還沒有支援自動產生語法以前
那真的會搞死人~
為了能夠成功測試 Flex 4 新功能,還是想辦法找出這些 Namespace Mapping 的規則
終於讓我找到了!
原來在 Flex SDK frameworks 目錄內,有一個 flex-config.xml 檔案
裡面會明確的宣告出有哪些 Namespace 可以用
每個 Namespace 包含一個 uri 與一個外部 manifest.xml 檔案路徑
...
<namespaces>
<namespace>
<uri>http://ns.adobe.com/mxml/2009</uri>
<manifest>mxml-2009-manifest.xml</manifest>
</namespace>
<namespace>
<uri>library://ns.adobe.com/flex/spark</uri>
<manifest>spark-manifest.xml</manifest>
</namespace>
<namespace>
<uri>library://ns.adobe.com/flex/halo</uri>
<manifest>halo-manifest.xml</manifest>
</namespace>
<namespace>
<uri>http://www.adobe.com/2006/mxml</uri>
<manifest>halo-manifest.xml</manifest>
</namespace>
<namespace>
<uri>http://ns.adobe.com/fxg/2008</uri>
<manifest>fxg-manifest.xml</manifest>
</namespace>
</namespaces>
...
而這些外部的 manifest.xml 檔案裡面
放的就是該 Namespace 下隸屬的 Class 與別名啦
以 fxg-manifest.xml 為例:
<?xml version="1.0"?>
<componentPackage>
<component id="BitmapGraphic" class="spark.primitives.BitmapImage"/>
<component id="CloseSegment" class="spark.primitives.pathSegments.CloseSegment"/>
<component id="CubicBezierSegment" class="spark.primitives.pathSegments.CubicBezierSegment"/>
<component id="Ellipse" class="spark.primitives.Ellipse"/>
<component id="Graphic" class="spark.primitives.Graphic"/>
<component id="Group" class="spark.components.Group"/>
......
透過以上的方式,總算可以很清楚找到 MXML Namespace 與 Class 對應關係
不用一直碰壁了!
相關連結:
Flex 4 SDK Gumbo Confluence
Download Flex 4 SDK Gumbo
Flex 4 Gumbo 雙向資料繫結測試
Flex SDK 馬歇爾計畫
AS3 技巧 - 利用 Flex Builder 編譯 Flash 相容 SWC 類別庫
















