flash组件--Button类族
更新日期:
组件思考
Button
这个组件在游戏中使用的超级多,一个现实区域,还可能有文字的显示,AS3自带的一个简单Button,SimpeButton,和名字一样很简单,处理三帧的显示,接受鼠标事件,但是可拓展性太小,而且没有获取子视图的API提供,所以重写一个。
设计
同样也是需要三帧显示,对应mouse_out
、mouse_ove
、mouse_dow
,当然你也可以让美术设计给更多,不过一般我们只需要三帧就可以了(这个和手机游戏中使用的三种状态的纹理差不多意思)。因为这三帧是分别对应三种鼠标事件的显示,所以内部需要监听和管理这三个事件,鼠标移上去可能还需要显示提示tip,这个在组件基类的时候已经处理过了,重写调用即可。事件在内部的监听一般会使用弱引用,就是addEventListener
方法最后一个参数这是为true
,这样在这个对象不在被使用的时候也会清除这个事件的。
抽象
因为历史原因,我们项目的工作流还是ps->flashcs->code,给到开发的美术资源都是fla文件,不过这种效率确实很高,所以按钮做成一个MovieClip
用跳帧的方式去工作很方便,抽象一个基类ButtonBase
,实现IState
接口的唯一方法:
|
|
这个方法就是在处理特定的事件的时候改变按钮的状态,就是跳帧。
接下来在其他的按钮类族(CheckBox
RadioButton
)中也会去调这个函数,让整个按钮类族都变的很方便。
Button
按照上面的思路写一个还是挺简单,其中要注意父类的callLate
函数的调用。
CheckBox
比它的父类多了一种选中的状态,所以就多了三帧,而且还有一个选中属性selected
,可读写,设置此值会影响组件的外观
RadioButton
单选的按钮,和CheckBox
类似也是6帧,一般不会单独使用,因为不能通过点击自己来切换选中和未选中状态,所以添加到RadioButtonGroup
类来使用。
项目中使用的按钮类用这三种就能全部涵盖进来了
常用属性
text
:设置按钮上的文字。slected
:是否选中状态(CheckBox
RadioButton
)。