虽然前段时间以乔布斯为首的几位大侠对 flash 的安全、性能等进行了强烈的批评,而且伴随着 html5 的日趋完善,可能这种批评声会越来越大,甚或超过南非世界杯呜呜组啦的分贝,但是个人认为 flex 确实是一个可以做 delphi 、 pb 、 c# 等客户端所具有的强鼠标、键盘操作性的 web 应用好工具。但最近在开发 flex 自定义组件的时候,却让我十分恼火,真 TMD 的想骂 Flex 开发团队是一帮蠢驴(这是气话, flex 总体来说还是不错的,但确实不是很成熟)。那么究竟什么让我这么火? Flex 自定义组件的属性配置就是个鸡肋,就是基本组件的属性配置也很差。
拿使用频率较高的 AdvancedDataGrid 来说,该控件的属性配置应该算是做的比较好的了,提供了列配置,开发人员可以通过图形界面增加、删除列,编辑列的可编辑、标题、显示字段等属性,但是比较 C# 等客户端的话, Flex 提供的可视化属性配置还是差之太远。现在自定义一个 Grid ,继承 AdvancedDataGrid 。关于如何自定义组件,网上已经说的很多了,这里不再赘述,自定义组件有 2 种做法:其一是 ActionScript 类,其二是 mxml 文件。不管用哪种方法,现在已经做好了一个自定义表格 MyGrid ,继承 AdvancedDataGrid 。
新建一个 mxml Application ,将 MyGrid 拖放到该 application 中,发现 MyGrid 的属性配置面板里除了 id 等几项设置外已再无其它内容,刚才在 AdvancedDataGrid 属性面板中所见的 dataProvider 、选择模式、列配置等都已不见,也就是说自定义的 MyGrid 不能进行可视列编辑了,狂晕呀。
仔细分析大概是这样的:
1) flex 所有可视组件的属性配置应该有个基本模板,大概该模板是基于 UIComponent 的;
2) flex 自包含可视组件的属性配置应该有其特定实现,比如 AdvancedDataGrid ,应该有扩展自基本模板的 AdvancedDataGrid 属性配置;
3) 所有自定义组件的属性配置都只有基本模板(诸如 id 、左右边距等),因为 flex 找不到自定义组件的属性配置模板实现(由于 flex 组件的属性配置是 flex 预定义程序,且只对 flex 的标准组件做了定义),所以只有用 UIComponent 的配置模板了 ;
结论与建议:
结论很明显, flex 的自定义组件没有可用的可视化属性配置,因此我们要设置属性只能在 mxml 文件或者 as 文件中进行 coding 脚本,如果一个 MyGrid 有 30 列,那么就 coding 30 对 AdvancedDataGridColumn 吧。
建议,虽说 flex 其核心还是脚本编程,但个人认为一个好的开发工具,高效的开发工具还是很重要的,我认为 flex 不仅要完善属性控制面板,对其数据管理、标准的组件(拿最简单的 Button 来说吧,在 4 中不能直接设置 icon 了,为了显示带 icon 的 button 我 tmd 要写一堆代码,而在 3 中却是可以直接设置的,虽说 4 是为了把显示和数据分开,但同时要考虑开发效率呀。)等也需要加以完善。