·您当前的位置:首页 > 技术教程 > AS2与AS3技术 >

[AS3]as3的按扭类范例宽高设定

时间:2016-07-29 10:47酷播
[AS3]as3的按扭类范例宽高设定

[AS3]as3的按扭类范例宽高设定

  1. package   
  2. {   
  3.     import flash.display.Sprite;   
  4.     import flash.events.Event;   
  5.     import flash.events.MouseEvent;   
  6.     import flash.filters.GlowFilter;   
  7.     import flash.geom.Rectangle;   
  8.    
  9.     /**   
  10.      * 按钮类   
  11.      * @author Jave.Lin   
  12.      */    
  13.     public class Button extends Sprite   
  14.     {   
  15.         private var _text:String;   
  16.         private var _isDowned:Boolean=false;   
  17.         private var _isOnClickShake:Boolean=true;   
  18.            
  19.         public function get isOnClickShake():Boolean{return _isOnClickShake;}   
  20.         public function set isOnClickShake(value:Boolean):void   
  21.         {   
  22.             if(_isOnClickShake!=value)   
  23.             {   
  24.                 _isOnClickShake=value;   
  25.                 if(_isOnClickShake)   
  26.                 {   
  27.                     addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);   
  28.                     addEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);   
  29.                 }   
  30.                 else   
  31.                 {   
  32.                     removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);   
  33.                     removeEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);   
  34.                 }   
  35.             }   
  36.         }   
  37.            
  38.         public function get text():String{return _text;}   
  39.         public function set text(value:String):void   
  40.         {   
  41.             if(_text!=value)   
  42.             {   
  43.                 _text=value;   
  44.                 refresh();   
  45.             }   
  46.         }   
  47.            
  48.         private var _label:Label;   
  49.            
  50.         private var _isAutoSize:Boolean=true;   
  51.            
  52.         public function get isAutoSize():Boolean{return _isAutoSize;}   
  53.         public function set isAutoSize(value:Boolean):void   
  54.         {   
  55.             if(_isAutoSize!=value)   
  56.             {   
  57.                 _isAutoSize=value;   
  58.                 refresh();   
  59.             }   
  60.         }   
  61.         //背景与文字的边框间距   
  62.         private var _bgMargin:Number=2;   
  63.            
  64.         public function Button($text:String="button")   
  65.         {   
  66.             this.mouseChildren = false;   
  67.                
  68.             text=$text;   
  69.                
  70.             initialize();   
  71.         }   
  72.            
  73.         private function initialize():void   
  74.         {   
  75.             this.mouseChildren=false;   
  76.                
  77.             if(stage)   
  78.             {   
  79.                 onAddedToStageHandler();   
  80.             }   
  81.             else   
  82.             {   
  83.                 addEventListener(Event.ADDED_TO_STAGE,onAddedToStageHandler);   
  84.             }   
  85.                
  86.             refresh();   
  87.         }   
  88.            
  89.         private function onAddedToStageHandler(e:Event=null):void   
  90.         {   
  91.             removeEventListener(Event.ADDED_TO_STAGE,onAddedToStageHandler);   
  92.                
  93.             addEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStageHandler);   
  94.                
  95.             addEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);   
  96.             addEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);   
  97.             //默认抖动的   
  98.             if(_isOnClickShake)   
  99.             {   
  100.                 addEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);   
  101.                 addEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);   
  102.             }   
  103.         }   
  104.            
  105.         private function onMouseUpHandler(e:MouseEvent=null):void   
  106.         {   
  107.             if(_isDowned)   
  108.             {   
  109.                 _isDowned=false;   
  110.                 this.x-=1;   
  111.                 this.y-=1;   
  112.             }   
  113.         }   
  114.            
  115.         private function onMouseDownHandler(e:MouseEvent):void   
  116.         {   
  117.             if(!_isDowned)   
  118.             {   
  119.                 _isDowned=true;   
  120.                 this.x+=1;   
  121.                 this.y+=1;   
  122.             }   
  123.         }   
  124.            
  125.         private function onMouseOutHandler(e:MouseEvent):void   
  126.         {   
  127.             removeEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);   
  128.             addEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);   
  129.                
  130.             onMouseUpHandler();   
  131.                
  132.             filters=null;   
  133.         }   
  134.            
  135.         private function onMouseOverHandler(e:MouseEvent):void   
  136.         {   
  137.             removeEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);   
  138.             addEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);   
  139.                
  140.             filters=[new GlowFilter(0x00ff00,1,3,3,3)];   
  141.         }   
  142.            
  143.         private function onRemovedFromStageHandler(e:Event):void   
  144.         {   
  145.             removeEventListener(Event.REMOVED_FROM_STAGE,onRemovedFromStageHandler);   
  146.             removeEventListener(MouseEvent.MOUSE_OVER,onMouseOverHandler);   
  147.             removeEventListener(MouseEvent.MOUSE_OUT,onMouseOutHandler);   
  148.             removeEventListener(MouseEvent.MOUSE_DOWN,onMouseDownHandler);   
  149.             removeEventListener(MouseEvent.MOUSE_UP,onMouseUpHandler);   
  150.         }   
  151.            
  152.         private function refresh():void   
  153.         {   
  154.             if(_label==null)   
  155.             {   
  156.                 //font Verdana   
  157.                 _label=new Label();   
  158.                 addChild(_label);   
  159.             }   
  160.                
  161.             _label.text=text;   
  162.                
  163.             //获取字体位置、大小   
  164.             var textFieldRect:Rectangle=_label.getBounds(this);   
  165.                
  166.             //居中   
  167.             _label.x=-textFieldRect.width/2;   
  168.             _label.y=-textFieldRect.height/2;   
  169.                
  170.             if(_isAutoSize)   
  171.             {   
  172.                 refreshBackground();   
  173.             }   
  174.         }   
  175.            
  176.         protected function refreshBackground():void   
  177.         {   
  178.             //获取字体位置、大小   
  179.             var textFieldRect:Rectangle=_label.getBounds(this);   
  180.                
  181.             //背景也居中   
  182.             this.graphics.clear();   
  183.             this.graphics.beginFill(0x55aa00, 0.5);   
  184.             this.graphics.drawRect(   
  185.                 (-textFieldRect.width/2)-_bgMargin,   
  186.                 (-textFieldRect.height/2)-_bgMargin,   
  187.                 textFieldRect.width+(_bgMargin*2),   
  188.                 textFieldRect.height+(_bgMargin*2)   
  189.             );   
  190.             this.graphics.endFill();   
  191.         }   
  192.     }   
  193. }   

 

热门文章推荐

请稍候...

保利威视云平台-轻松实现点播直播视频应用

酷播云数据统计分析跨平台播放器