制作SimpleButton及设置显示对象的热区

SimpleButton一般用于控制 SWF 文件中按钮元件,一般是由美术人员制作好了按钮素材。


如果在as里创建SimpleButton则需要指定3种状态的皮肤overState,upState,downState,和点击测试对象hitTestState。

这几个state都是显示对象。

hitTestState指定了按钮的点击范围,如果不指定hitTestState或者设置为null,则按钮不可点击(为非活动状态,不响应用户输入事件)。

一般hitTestState指定为overState,表示按钮点击区域与overState皮肤区域一致。


设置其他显示对象做hitTestState时,要注意该显示对象的x,y值,SimpleButton的点击区从该x,y值开始生效。

因为SimpleButton无法添加子对象,最好创建SimpleButton的子类,在子类内部指定state对象。

这是一个实例:

public class CustomSimpleButton extends SimpleButton {
		private var upColor:uint   = 0xFFCC00;
		private var overColor:uint = 0xCCFF00;
		private var downColor:uint = 0x00CCFF;
		private var size:uint      = 80;
		
		public function CustomSimpleButton() {
			downState      = new ButtonDisplayState(downColor, size);
			overState      = new ButtonDisplayState(overColor, size);
			upState        = new ButtonDisplayState(upColor, size);
			hitTestState   = new ButtonDisplayState(upColor, size * 2);
			hitTestState.x = -(size / 4);
			hitTestState.y = hitTestState.x;
			useHandCursor  = true;
			
		}
	}
public class ButtonDisplayState extends Shape
	{
		private var bgColor:uint;
		private var size:uint;
		
		public function ButtonDisplayState(bgColor:uint, size:uint) {
			this.bgColor = bgColor;
			this.size    = size;
			draw();
		}
		
		private function draw():void {
			graphics.beginFill(bgColor);
			graphics.drawRect(0, 0, size, size);
			graphics.endFill();
		}
	}

运行效果:



红线区域为可点击区,点击区比按钮本身要大,按钮是80x80大小,点击区则是160x160的区域,开始位置为左上角(-20,-20)。


对于MovieClip对象可以通过设置hitArea来指定点击区,doc里说明的比较详细:

注意hitArea不与hitTestState完全一样,在设置为null的时候表现效果是不同的。


利用这种显示对象的热区特性可以实现一些特殊功能,比如显示对象有多个子对象,要快速切换可点击对象,要指定一个热区可点击有效等。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值