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即可。在下载的样例中有详细的参考。