• 一个flash鼠标特效


    有点像“水果忍者”划过屏幕时的动画,在每次按住鼠标左键不放然后拖动鼠标并释放,会出现动画。动画我参考别人的代码,然后在显示特效的时候使用了不同的颜色。

    代码并不复杂,主要用到了GlowFilter,然后让线条的粗细大小从指定的一个值,慢慢减小..

    MouseEffectDemo.as

       1: package  
       2: {
       3:     import flash.display.Sprite;
       4:     import flash.events.Event;
       5:     import flash.events.MouseEvent;
       6:     import flash.filters.GlowFilter;
       7:     /**
       8:      * ...
       9:      * @author Meteoric_cry
      10:      */
      11:     public class MouseEffectDemo extends Sprite
      12:     {
      13:         private var _scene:Sprite;
      14:         
      15:         private var _startX:int;
      16:         private var _startY:int;
      17:         
      18:         private var _isDown:Boolean;
      19:         
      20:         private static const MIN_POINT_DISTANCE:int = 20;
      21:         
      22:         public function MouseEffectDemo() 
      23:         {
      24:             initView();
      25:         }
      26:         
      27:         private function initView():void
      28:         {
      29:             _scene = new Sprite();
      30:             
      31:             addChild(_scene);
      32:             
      33:             _scene.filters = [getGlowFilter(0x00CCFF)];
      34:             
      35:             stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
      36:             stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler);
      37:         }
      38:         
      39:         private function listenerEnterFrameHandler():void
      40:         {
      41:             unlistenerEnterFrameHandler();
      42:             
      43:             stage.addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
      44:         }
      45:         
      46:         private function unlistenerEnterFrameHandler():void
      47:         {
      48:             stage.removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
      49:         }
      50:         
      51:         private function onEnterFrameHandler(e:Event):void 
      52:         {
      53:             //LineArr的长度可能会动态变化,详情参见它的update方法
      54:             for each (var line:Line in Line.lineArr)
      55:             {
      56:                 line.update();
      57:             }
      58:             
      59:             update();            
      60:         }
      61:         
      62:         private function update():void
      63:         {
      64:             if (_isDown == false)
      65:             {
      66:                 if (Line.lineArr.length === 0)
      67:                 {
      68:                     unlistenerEnterFrameHandler();
      69:                 }
      70:                 
      71:                 return ;
      72:             }
      73:             
      74:             var endX:int = mouseX;
      75:             var endY:int = mouseY;
      76:             
      77:             if (Math.abs(_startX - endX) < MIN_POINT_DISTANCE || Math.abs(_startY - endY) < MIN_POINT_DISTANCE)
      78:             {
      79:                 return ;
      80:             }
      81:             
      82:             var line:Line = new Line(_startX, _startY, endX, endY);
      83:             
      84:             _scene.addChild(line);
      85:             
      86:             _startX = endX;
      87:             _startY = endY;            
      88:         }
      89:         
      90:         private function onMouseUpHandler(e:MouseEvent):void 
      91:         {
      92:             _isDown = false;
      93:         }
      94:         
      95:         private function onMouseDownHandler(e:MouseEvent):void 
      96:         {
      97:             _isDown = true;
      98:             
      99:             changeColorHandler();
     100:             
     101:             _startX = mouseX;
     102:             _startY = mouseY;
     103:             
     104:             listenerEnterFrameHandler();
     105:         }
     106:         
     107:         private function getGlowFilter(color:Number):GlowFilter
     108:         {
     109:             return new GlowFilter(color, 1, 10, 10, 2, 1, false, false)
     110:         }
     111:         
     112:         private function changeColorHandler():void
     113:         {
     114:             var colorArr:Array = [0x00CCFF, 0xF5001D, 0xBC0093, 0x00CE00, 0xFF7400];
     115:             var color:Number = colorArr[Math.floor(Math.random() * colorArr.length)];
     116:             
     117:             _scene.filters = [getGlowFilter(color)];
     118:         }
     119:         
     120:     }
     121:  
     122: }

    Line.as

       1: package  
       2: {
       3:     import flash.display.Sprite;
       4:     
       5:     /**
       6:      * ...
       7:      * @author Meteoric_cry
       8:      */
       9:     public class Line extends Sprite
      10:     {
      11:         static public var lineArr:Array = [];
      12:         
      13:         public var startX:int;
      14:         public var startY:int;
      15:         public var endX:int;
      16:         public var endY:int;
      17:         public var lineSize:int;
      18:         
      19:         public function Line(x0:int, y0:int, x1:int, y1:int, size:int=8) 
      20:         {
      21:             lineArr.push(this);
      22:             
      23:             startX = x0;
      24:             startY = y0;
      25:             endX = x1;
      26:             endY = y1;
      27:             lineSize = size;
      28:             
      29:             draw();
      30:         }
      31:         
      32:         private function draw():void
      33:         {
      34:             graphics.clear();
      35:             graphics.lineStyle(lineSize, 0xFFFFFF);
      36:             graphics.moveTo(startX, startY);
      37:             graphics.lineTo(endX, endY);
      38:         }
      39:         
      40:         public function update():void
      41:         {
      42:             draw();
      43:             
      44:             lineSize -= 1;
      45:             
      46:             if (lineSize < 1)
      47:             {
      48:                 clear();
      49:             }
      50:         }
      51:         
      52:         private function clear():void
      53:         {
      54:             graphics.clear();
      55:             
      56:             for (var i:int = 0, len:int = lineArr.length; i < len; i++)
      57:             {
      58:                 var line:Line = lineArr[i] as Line;
      59:                 
      60:                 if (line == this)
      61:                 {
      62:                     lineArr.splice(i, 1);
      63:                     parent.removeChild(this);
      64:                     
      65:                     break;
      66:                 }
      67:             }
      68:         }
      69:         
      70:         
      71:     }
      72:  
      73: }
  • 相关阅读:
    CentOS6.9下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数
    Debian9.5下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数
    CentOS6.9下sftp配置和scp用法
    Debian9.5下sftp配置和scp用法
    SSH概述与配置文件说明
    Linux下的权限掩码umask
    gcc 高版本兼容低版本 技巧 :指定 -specs={自定义specs文件} 参数。可以搞定oracle安装问题
    apt 之 最强技能:【欺骗】,文雅点【偷梁换柱】!
    续:纠正:ubuntu 【6.04 LTS】可以安装安装 ! for《Oracle-10.2.0.1,打补丁10.2.0.5:在 debian 版本4【不含4】以上,及 ubuntu 7.04【不含7.04】以上都可以安装!》
    ubuntu 4.10~5.10 :古老的ubuntu上安装oracle10g的情况
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/2645542.html
Copyright © 2020-2023  润新知