众所周知,flash cs3.0的组件是由gskinner小组开发的.gskinner的Grant在Fitc 2007上演讲的关于flash cs3 组件的内容.下面文章是来自Grant 的fitc 2007上的演讲,尽管我对flash 的组件一直没有好感,但是从flash cs3开始,应是看到了一些改变.此文应说是很有助于我们了解flash cs3.0 components
Grant的演讲主要议题是: 1.文件大小和性能: 减小了组件的容量大小,降低了cpu/内存的损耗. 2.容易更换皮肤和定制风格: 只需要在工作区中就可以轻易的更改组件的外观 3.扩展性: flash cs3组件架构更容易扩展. 4.可移植性: 可以实现as2.0到as3.0及as3.0 到flex的移值.
文件大小和性能大小: 由原来v2组件的大小,降低了20-45% flash cs3组件约10k大小,小于v2组件的20k-17k,更小于flex组件的110k
性能: 低cup占有率,高性能 更得益于ActionScript 3.0性能. 带来一些新特色如event model. strong typing, Dictionary. 不在使用递归查找.
*具说演示时同时选中10万条list中的数据,滚动条滚动的仍相当的平滑
皮肤和风格:简单而有效
可视皮肤 操作过程: 1.将组件拖到场景中 2.双击场景中的组件 3.编辑它的原始元素. 4,刷新,重复
技巧,你可以使用图形符号,然后使用scale9功能来共享组件所需的素材. 限制: 没有实时预览
如果你喜欢使用代码,也可以使用代码来更改皮肤 操作过程: 1.绑定一个类到皮肤影片剪辑上. 2.在皮肤影片剪辑的时间线上书写代码.
风格 风格可以让你应用皮肤,文本格式或是使用其它的风格应用于实例,或所有的组件. 使用方法:
import fl.managers.StyleManager; 风格不再会因为递归查询而影响到效率.因此你可在运行状态设置风格而不会造成对性能的影响.
// 改变单一实例风格 myInstance.setStyle("styleName", styleValue);
// 改变所有组件风格 StyleManager.setStyle("styleName", styleValue);
//针对某一特定组件实例应用风格 StyleManager.setComponentStyle(component, "styleName",
实例做为皮肤
比较高级的特性,你可以使用某一实例来做为组件皮肤.比如使用动态载入的内容来做为一个icon皮肤.需要注意的是你只能针对单独的组件实例应用实例来做为皮肤.
TileList, DataProvider and CellRenderer TileList : 一个新的数据列表组件.
DataProvider 不再需要先将数据混合至数组中,而是强制使用列表,使用同一个DataProvider 可以更新多个数据列.
// 数据可以是数组,xml或是其它 myList.dataProvider = new DataProvider(data); 方法: addItem, removeItem, replaceItem, merge, invalidate, sort, toArray, etc. 事件: DataChange和PreDataChange中包含有许多变化类型的信息和受影响的索引.
CellRenderer 扩展CellRenderer类来创建你自已的自定义cell Renderer
import fl.controls.listClasses.CellRenderer;
public class MyRenderer extends CellRenderer {
// ... }
cs3组件的不足
1.没有了data binding和data组件. 2.不在使用css 定义风格而是简单的使用style model. 3.没有了tree 和 accordion 4.Api差异化(一些组件的接口与flex 2并不相同).
ps:以上只是部分内容.详细内容请看Grant fitc2007 talk |