Flex 重写组件

Flex 重写组件

ID:40746012

大小:21.02 KB

页数:4页

时间:2019-08-07

Flex 重写组件_第1页
Flex 重写组件_第2页
Flex 重写组件_第3页
Flex 重写组件_第4页
资源描述:

《Flex 重写组件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、重写组件一、为什么要重写组件1、在FLEX已有组件无法满足业务需求,或是需要更改其可视化外观等特性时,直接进行继承扩展。举例,继承BUTTON组件的长文本却不自动换行的自定义控件。2、为了模块化设计或进一步重用,需要对FLEX组件进行组合。比如一个包括TEXTAREA,BUTTON的复合控件。二、重写组件需要经常换位思考的三个角色1、作为重写组件的使用者,有哪些需求。比如需要在MXML标签和AS代码中暴露哪些属性及对应默认值、事件和事件的处理逻辑。2、重写组件一般需要使用FLEX原有组件,要站在原有

2、开发者的角度了解设计规则。3、作为重写组件的设计者,在满足需求的情况下尽量做到可复用、低耦合易扩展等设计原则,让新组件像FLEX原组件一样好用。三、重写组件AS方式和MXML方式的采用规则1、MXML文件和AS文件最后都会被编译成AS类,只不过MXML编译速度稍慢一些2、如果MXML和AS都能完成的一个简单组件,MXML更容易被创建和控制布局3、当要覆盖组件的某些方法时只能用AS方式4、创建一个直接继承UIComponent的子类时只能用AS5、创建非可视化组件比如Formatter、validat

3、or、Effect……时,只能用AS6、要为组件添加日志功能时,只能用AS.四、AS方式重写组件常规步骤1、如果有必要,为组件创建所有基于标记(tag-based)的皮肤(skins)2、创建ActionScript类文件⑴从一个基类扩展,比如UIComponent或者其他的组件类⑵指定使用者能够通过MXML标记进行设置的属性⑶嵌入(Embed)所有的图片和皮肤文件,文件大小尽可能小⑷实现构造器,可以设置属性和样式的缺省值,或者初始化数据结构,比如数组⑸根据需要,确定是否覆盖以下五个方法:(a)UI

4、Component.createChildren()方法,创建组件的子组件(b)UIComponent.commitProperties()方法,提交组件所有的属性变化,设置measure()方法可能使用的属性值。绝大多数情况下,都是对影响组件如何在屏幕上显示的属性使用这个方法(c)UIComponent.measure()方法,设置组件的缺省size(measuredWidth、measuredHeight)和缺省的最小size(measuredMinWidth、measuredMinHeight

5、)(d)UIComponent.layoutChrome()方法,用于定义容器的边框区域和确定边框区域的位置,以及确定要在边框区域中显示的附加元素。例如,Panel容器使用layoutChrome()方法定义panel容器的title区域,这个区域用来包含title文本和close按钮。通常,使用RectangularBorder类来定义容器区域的边框,而不是用图片资源去包围组件。比如创建一个RectangularBorder对象,然后在重载的createChildren()方法中,将其作为一个内容

6、子控件添加到组件中,再用updateDisplayList()方法来确定其位置。将容器的内容区域和容器边框区域分开处理的主要原因是为了应对Container.autoLayout属性被设置为false的这种情况。当autoLayout(自动布局)属性使用默认值true时,只要容器子控件的大小和位置发生变化,容器及子控件就会进行度量和布局。而当其为false时,度量和布局只在子控件被添加或移出容器时才执行。分开处理让Flex在这两种情况下都执行layoutChrome(),从而在autoLayout属

7、性为false的情况下,容器仍能够更新它的边框区域。(e)UIComponent.updateDisplayList()方法,根据以前所设置的属性和样式来确定组件的子组件在屏幕上的大小(size)及位置(position),并且画出组件所使用的所有皮肤(skins)及图形化元素。组件的父容器负责确定组件本身大小(size)。要在updateDisplayList()方法中确定一个组件的大小,当子组件是UICOMPONENT时使用setActualSize()方法,而不是UICOMPONENT则使用与

8、组件大小相关的属性width和height。要确定组件的位置,当子组件是UICOMPONENT时使用move()方法,而不是UICOMPONENT则使用x和y属性。一个区别就是move()方法不仅改变了组件位置,而且在调用这个方法之后立即分发了一个move事件,设置x和y属性也更改组件的位置,但却在下一个屏幕更新事件中才会分发move事件。组件支持很多类型的可视元素,比如皮肤,样式和边框。在updateDisplayList()方法中,可以添加这些可视元素,并对它们进

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。