Adobe的Flex在有些地方確實不盡如人意,比如前面提到的HTML嵌入式支援,而TitleWindow不支援“縮放和調整大小”也是很讓人不爽,這種情況下只能外圍擴充。
在很多實際應用中都需要Popup視窗,這個視窗一般都是TitleWindow,當然我們也希望其能夠支援Resizable,min,max。
我之前一直是類比Jove寫的那個ResizeManager的自己寫的一個ResizeTitleWindow,勉強可以使用。Jove那個ResizeManager可以從 http://www.adobe.com/cfusion/communityengine/index.cfm?event=showDetails&loc=en_US&postId=1685&productId=2 這個地址擷取,有源碼和範例可供參考。一般來講直接使用ResizeManager來操作就可以了,但我這邊還需要對一些額外事件多監聽和處理,所以不得不改寫它。
前些日子,又看了看FlexLib(http://flexlib.googlecode.com)的MDI Window組件。MDI Window功能很cool,不過不支援模態。另外就是“侵入性”太強,其必須在一個MDI Canvas畫布中,並被MDI Manager所管理。所以如果很簡單使用(就像PopupManager簡單彈出一個TitleWindow)那樣使用,是不可能的了。
但MDI Window用於解決符合那種“在一個控制項記憶體在很多Panel”的情境非常適合,也非常cool。
最近發現一個新的ResiableTitleWindow,比較好用,推薦一下。在http://www.adobe.com/cfusion/exchange/index.cfm?event=extensionDetail&extid=1207017&loc=en_us# 可以下載到。基本上直接引入就可以使用了。不過你們很多事件處理方式採用了private方法,所以建議大家改成protect,以便於擴充。
如果你想實現不同的“最大”“最小”“關閉”按鈕表徵圖,也非常容易,只需要設定相應的css即可。在下載的範例中有詳細的參考。