文章目录
  1. 1. 组件思考
    1. 1.1. 设计
    2. 1.2. 抽象
      1. 1.2.1. Button
      2. 1.2.2. CheckBox
      3. 1.2.3. RadioButton
  2. 2. 常用属性

组件思考

Button这个组件在游戏中使用的超级多,一个现实区域,还可能有文字的显示,AS3自带的一个简单Button,SimpeButton,和名字一样很简单,处理三帧的显示,接受鼠标事件,但是可拓展性太小,而且没有获取子视图的API提供,所以重写一个。

设计

同样也是需要三帧显示,对应mouse_outmouse_ovemouse_dow,当然你也可以让美术设计给更多,不过一般我们只需要三帧就可以了(这个和手机游戏中使用的三种状态的纹理差不多意思)。因为这三帧是分别对应三种鼠标事件的显示,所以内部需要监听和管理这三个事件,鼠标移上去可能还需要显示提示tip,这个在组件基类的时候已经处理过了,重写调用即可。事件在内部的监听一般会使用弱引用,就是addEventListener方法最后一个参数这是为true,这样在这个对象不在被使用的时候也会清除这个事件的。

抽象

因为历史原因,我们项目的工作流还是ps->flashcs->code,给到开发的美术资源都是fla文件,不过这种效率确实很高,所以按钮做成一个MovieClip用跳帧的方式去工作很方便,抽象一个基类ButtonBase,实现IState接口的唯一方法:

1
public function changeState(state:int):void;

这个方法就是在处理特定的事件的时候改变按钮的状态,就是跳帧。
接下来在其他的按钮类族(CheckBox RadioButton)中也会去调这个函数,让整个按钮类族都变的很方便。

Button

按照上面的思路写一个还是挺简单,其中要注意父类的callLate函数的调用。

CheckBox

比它的父类多了一种选中的状态,所以就多了三帧,而且还有一个选中属性selected,可读写,设置此值会影响组件的外观

RadioButton

单选的按钮,和CheckBox类似也是6帧,一般不会单独使用,因为不能通过点击自己来切换选中和未选中状态,所以添加到RadioButtonGroup类来使用。

项目中使用的按钮类用这三种就能全部涵盖进来了

常用属性

  • text:设置按钮上的文字。
  • slected:是否选中状态(CheckBox RadioButton)。
文章目录
  1. 1. 组件思考
    1. 1.1. 设计
    2. 1.2. 抽象
      1. 1.2.1. Button
      2. 1.2.2. CheckBox
      3. 1.2.3. RadioButton
  2. 2. 常用属性