發表文章

目前顯示的是有「Flex」標籤的文章

Flex的官方文件

感覺Flex的文件有好幾個,搞不清楚到底應該怎麼看,以這篇文章來自我釐清一下脈絡。 Livedocs Using Flex (位於livedocs裡, 網址裡面已經說明只有Flex3的內容) http://livedocs.adobe.com/flex/3/html/index.html 這份文件很棒,以口語化的內容向開發者介紹Flex各個環節, 文中並嵌入 source code和範例,就像是一本寫得很好的書。想要了解某個機制的設計和概念時,可以先從這邊開始閱讀。user可以針對每篇內容做討論。 Help Using Flex (位於Help裡) http://help.adobe.com/en_US/flex/using/index.html 與Livedocs的內容幾乎一模一樣,但網址裡面沒有限定某一個版本,所以內容包含Spark的介紹也合理。一樣的內容,但Index書目跟Livedocs卻不一樣,但稍微比對一下發現只是章節編排的位置不同。比如Deployment的章節,在Help裡位於最後一章,但在Livedocs卻是位於中間介紹完Development的地方。Help裡面經常會附帶有Builder的操作步驟。跟Livedocs一樣,user可以針對每篇內容做討論,Help裡面也有這個機制,但可能比較新的關係,Help的討論幾乎沒有,在Livedocs中的討論比較多。 不一樣的地方來了,(1) 對於Flex Builder的介紹方面,Livedocs是針對比較舊的Flex Builder 3做介紹,新的Flash Builder 4以上所具有的功能當然就沒有,這很合理。至於內容上,又是否有什麼不一樣呢? [TODO] 實際找一個需要了解 topic的內容,兩邊都看過再來比較。然後,Help裡面會包含,但LiveDocs裡面不會有。(2) 有包含AIR的介紹。不一樣的地方,沒有包含AIR的介紹。(3) Help文件有中文翻譯,只要把"en_US"的路徑,改為"zh_TW"就可以看到中文版,如果沒有繁體中文版會被導到英文版中,這時也可以"zh_CH"試試簡體中文版。不曉得為何不直接在UI上提供語言切換,又是一個謎。(4) 有行動應用方面的資訊,...

Unload Flex Module Completely?

Flex內部有提供Module的機制,透過Module的設計,可以把主程式切分成幾個swf,然後在需要的時候才去動態 loading和 instantiated,這樣作理論上可以調控網路使用量和記憶體使用量...可是... 這個機制加載時沒問題(目前),但是移除(unload)時卻是問題重重,最大的問題就是,移除掉module後原本佔用的記憶體永遠不會被釋放, 爬了很多文,發現有一些work around的撇步 ,稍微試了一下結果還是行不通: What We Know About Unloading Modules   Unloading modules completely, MXML   問題的關鍵應該是Flex內部有某些物件始終cache住讀進來的 module的 reference,導致即使表面上以為刪除,但實際上卻永遠不會被垃圾蒐集。時間關係,目前先不考慮用Module來做想要的功能了。

手動關閉Alert組件的方法

正常關閉Alert組件的方法是在介面上按下是、否、取消的按鈕後即自動關閉,並且可以指定觸發的處理事件。 但實際使用時發現,Alert本身並沒有提供關閉視窗的方法,如果要經由程式來關閉Alert的話,可以使用PopupManager提供的方法。 import mx.managers.PopUpManager; var alert : Alert = Alert.show( message ); PopUpManager.removePopUp( alert );

Flex最底層的Application是一個Singleton Class

因此在app的任一個子物件中,用Application.application就可以access到最底層的屬性和物件了。換句話說,最底層的(public的)屬性和物件都是全域的,用一個最簡單的範例做demo。 主程式裡面有一個數字,可以按主程式的按鈕去累加。 main.mxml <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:comp="comp.*"> <mx:Script> <![CDATA[ [Bindable] public var counter:int = 0; ]]> </mx:Script> <mx:Label text="'counter' property in flex app root:" /> <mx:Label text="{counter}" /> <mx:HBox> <mx:Label text="access 'counter' from root:" /> <mx:Button mouseDown="counter++;" label="plus"/> </mx:HBox> <comp:TestApplicationSingleton/> </mx:Application> 另外做一個組件,在組件內部可以直接access到主程式裡面那個累加的數字 comp/TestApplicationSingleton.mxml <?xml version="1.0" encoding="utf-8"?> <mx:Panel x...

在AIR裡放一個最精簡的Web Browser

如題。

編譯Flex Module的方法

1. 在一般project中新增mxml module。不需特別去編譯,在編譯主application的時候就會被自動編譯 2. 新增一般的mxml檔,以module為最外層包裝,直接編譯該mxml就可以得到swf 3. 使用 mxmlc xxxModule.mxml 工具編譯。建立繼承自module的as class似乎只能用這方法 (編譯的參數可以參考 Compiling modules 這篇)

設定Flex Application FrameRate的方法

方法參考自  Flex tip: a higher frame rate even makes text entry look better   mxml 應用設定的方法 :application frameRate="60"> ActionScript 應用設定的方法 [SWF(frameRate="60")] public class MyApp extends Sprite { ... } 這篇文章也分享了一個重點,就是frame rate的高低其實對Flex內建組件的表現也有影響,更新變高其實也讓組件的回饋(ex:在TextInput打字後文字的顯示)變得更為靈敏。

用Flash開發Flex組件的方法

一搜尋就找到一篇Flash Evanglist寫的不錯的教學 Tutorial: The Flash and Flex marriage ,對我很有幫助。 個人筆記(ps:只記不知道的): When you’ve done that, go ahead and double click on the MyVideoPlayer movieclip. Create a new layer and draw a rectangle with the same size as your FLVPlayback component. Convert this in to a movieclip and specify it’s instance name to “boundingBox”. Once we use our component in Flex, it will not be visible. Flex will use this “boundingBox” movieclip to determine how big your component actually is .  If you’ve done that, we also need to add the player skin we’re using. This goes in to the src folder. So go ahead and drag “SkinOverAllNoFullNoCaption.swf” to the src folder   (play的skin的access路徑是跟著主swf的)  of your Flex project. 文章最後可以找到幾則相關的教學,也不錯 Video tutorial: Create Flex container components with Flash CS4