2016-10-13 00:16:48 点击量:12 标签: 收藏本文
[AS3]as3的按扭类范例宽高设定
- package
- {
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import flash.filters.GlowFilter;
- import flash.geom.Rectangle;
- /**
- * 按钮类
- * @author Jave.Lin
- */
- public class Button extends Sprite
- {
- private var _text:String;
- private var _isDowned:Boolean=false;
- private var _isOnClickShake:Boolean=true;
- public function get isOnClickShake():Boolean{return _isOnClickShake;}
- public function set isOnClickShake(value:Boolean):void
- {
- if(_isOnClickShake!=value)
- {
- _isOnClickShake=value;
- if(_isOnClickShake)
- {
- addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);
- addEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);
- }
- else
- {
- removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);
- removeEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);
- }
- }
- }
- public function get text():String{return _text;}
- public function set text(value:String):void
- {
- if(_text!=value)
- {
- _text=value;
- refresh();
- }
- }
- private var _label:Label;
- private var _isAutoSize:Boolean=true;
- public function get isAutoSize():Boolean{return _isAutoSize;}
- public function set isAutoSize(value:Boolean):void
- {
- if(_isAutoSize!=value)
- {
- _isAutoSize=value;
- refresh();
- }
- }
- //背景与文字的边框间距
- private var _bgMargin:Number=2;
- public function Button($text:String="button")
- {
- this.mouseChildren = false;
- text=$text;
- initialize();
- }
- private function initialize():void
- {
- this.mouseChildren=false;
- if(stage)
- {
- onAddedToStageHandler();
- }
- else
- {
- addEventListener(Event.ADDED_TO_STAGE,onAddedToStageHandler);
- }
- refresh();
- }
- private function onAddedToStageHandler(e:Event=null):void
- {
- removeEventListener(Event.ADDED_TO_STAGE,onAddedToStageHandler);
- addEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStageHandler);
- addEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
- addEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
- //默认抖动的
- if(_isOnClickShake)
- {
- addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);
- addEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);
- }
- }
- private function onMouseUpHandler(e:MouseEvent=null):void
- {
- if(_isDowned)
- {
- _isDowned=false;
- this.x-=1;
- this.y-=1;
- }
- }
- private function onMouseDownHandler(e:MouseEvent):void
- {
- if(!_isDowned)
- {
- _isDowned=true;
- this.x+=1;
- this.y+=1;
- }
- }
- private function onMouseOutHandler(e:MouseEvent):void
- {
- removeEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
- addEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
- onMouseUpHandler();
- filters=null;
- }
- private function onMouseOverHandler(e:MouseEvent):void
- {
- removeEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
- addEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
- filters=[new GlowFilter(0x00ff00,1,3,3,3)];
- }
- private function onRemovedFromStageHandler(e:Event):void
- {
- removeEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStageHandler);
- removeEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);
- removeEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);
- removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);
- removeEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);
- }
- private function refresh():void
- {
- if(_label==null)
- {
- //font Verdana
- _label=new Label();
- addChild(_label);
- }
- _label.text=text;
- //获取字体位置、大小
- var textFieldRect:Rectangle=_label.getBounds(this);
- //居中
- _label.x=-textFieldRect.width/2;
- _label.y=-textFieldRect.height/2;
- if(_isAutoSize)
- {
- refreshBackground();
- }
- }
- protected function refreshBackground():void
- {
- //获取字体位置、大小
- var textFieldRect:Rectangle=_label.getBounds(this);
- //背景也居中
- this.graphics.clear();
- this.graphics.beginFill(0x55aa00, 0.5);
- this.graphics.drawRect(
- (-textFieldRect.width/2)-_bgMargin,
- (-textFieldRect.height/2)-_bgMargin,
- textFieldRect.width+(_bgMargin*2),
- textFieldRect.height+(_bgMargin*2)
- );
- this.graphics.endFill();
- }
- }
- }
我们是一家提供综合软件外包与弱电工程服务的技术公司。
业务涵盖定制软件、管理系统、网站、小程序、APP、系统集成、网络布线、监控安防、门禁、机房建设及长期技术维护。
公司地址:湖北省宜昌市伍家岗区东站二路6号三峡(宜昌)大数据产业园海洋馆二楼A203室