守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 721|回复: 3

[华丽特效] 鼠标滑动粒子效果

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51757
    钢镚
    1422

    开源英雄守望者

    发表于 2015-7-15 15:19:33 | 显示全部楼层 |阅读模式




    1. // forked from fumix's 重力マウス(リンクリストにしてみた)
    2. // forked from undo's 重力マウス
    3. // リンクリストにしてみたけどそんなに速くない??
    4. package
    5. {
    6.     import flash.display.Bitmap;
    7.     import flash.display.BitmapData;
    8.     import flash.display.Sprite;
    9.     import flash.display.StageAlign;
    10.     import flash.display.StageScaleMode;
    11.     import flash.events.Event;
    12.     import flash.geom.ColorTransform;
    13.     import flash.geom.Point;
    14.     import flash.geom.Rectangle;
    15.     import net.hires.debug.Stats;

    16.     [SWF(frameRate='60', width='465', height='465', backgroundColor='0x0')]

    17.     public class ParticleTest1 extends Sprite
    18.     {
    19.         private var _bmp:Bitmap;
    20.         private var _bmd:BitmapData;
    21.         private var _bmdRect:Rectangle;
    22.         private var _colorTransform:ColorTransform = new ColorTransform(0.9, 0.9, 0, 1.0);

    23.         private var _nodeArray:Array = [];
    24.         private var _first:Node;
    25.         private var _maxNum:int = 30000;
    26.         
    27.         private var _rect:Rectangle = new Rectangle(0, 0, 1, 1);

    28.         public function ParticleTest1()
    29.         {
    30.             this.stage.align = StageAlign.TOP_LEFT;
    31.             this.stage.scaleMode = StageScaleMode.NO_SCALE;
    32.             addEventListener(Event.ADDED_TO_STAGE, init);
    33.         }

    34.         private function init(evt:Event):void
    35.         {
    36.             removeEventListener(Event.ADDED_TO_STAGE, init);
    37.             var old:Node;

    38.             _bmd = new BitmapData(465, 465, false, 0x000000);
    39.             _bmp = new Bitmap(_bmd);
    40.             addChild(_bmp);
    41.             this._bmdRect = new Rectangle(0, 0, 465, 465);

    42.             for (var i:int = 0; i < this._maxNum; i++)
    43.             {
    44.                 var n:Node = new Node();
    45.                 n.pos_x = Math.random() * 465;
    46.                 n.pos_y = Math.random() * 465;
    47.                 this._nodeArray.push(n);
    48.                 //リンクリスト
    49.                 if (_first == null) {
    50.                     old = _first = n;
    51.                 } else {
    52.                     old.next = n;
    53.                     old = n;
    54.                 }
    55.             }
    56.             
    57.             addChild(new Stats());
    58.             addEventListener(Event.ENTER_FRAME, onEnter);
    59.         }

    60.         private function onEnter(evt:Event):void
    61.         {
    62.             //var gravPoint:Point = new Point(mouseX, mouseY);
    63.             var gravPoint_x:Number = mouseX;
    64.             var gravPoint_y:Number = mouseY;
    65.             var n:Node = _first;
    66.             this._bmd.lock();
    67.             do
    68.             {
    69.                 //var n:Node = this._nodeArray[i] as Node;
    70.                 //var diff:Point = new Point(gravPoint.x - n.pos.x, gravPoint.y - n.pos.y);
    71.                 var diff_x:Number = gravPoint_x - n.pos_x;
    72.                 var diff_y:Number = gravPoint_y - n.pos_y;
    73.                 var rad:Number = Math.atan2(diff_y, diff_x);
    74.                 var grav:Number = 50 / Math.sqrt(diff_x * diff_x + diff_y * diff_y);
    75.                 n.acc_x = (Math.cos(rad) * grav);
    76.                 n.acc_y = (Math.sin(rad) * grav);
    77.                 n.v_x += n.acc_x;
    78.                 n.v_y += n.acc_y;
    79.                 n.pos_x += n.v_x;
    80.                 n.pos_y += n.v_y;
    81.                 n.acc_x *= 0.98;
    82.                 n.acc_y *= 0.98;
    83.                 n.v_x *= 0.96;
    84.                 n.v_y *= 0.96;
    85.                 if (n.pos_x > 465)
    86.                     n.pos_x = 0;
    87.                 else if (n.pos_x < 0)
    88.                     n.pos_x = 465;
    89.                 if (n.pos_y > 465)
    90.                     n.pos_y = 0;
    91.                     
    92.                 else if (n.pos_y < 0)
    93.                     n.pos_y = 465;
    94.                
    95.                 _rect.x = n.pos_x;
    96.                 _rect.y = n.pos_y;
    97.                 this._bmd.fillRect(_rect, 0xffffff);
    98.             }
    99.             while (n = n.next);
    100.             this._bmd.colorTransform(this._bmdRect, this._colorTransform);
    101.             this._bmd.unlock();
    102.         }
    103.     }
    104. }

    105. import flash.geom.Point;

    106. class Node
    107. {
    108.     public var acc_x:Number;
    109.     public var acc_y:Number;
    110.     public var v_x:Number = 0;
    111.     public var v_y:Number = 0;
    112.     public var pos_x:Number = 0;
    113.     public var pos_y:Number = 0;
    114.     public var next:Node;
    115. }
    复制代码






    本文来自:http://wonderfl.net/c/cjhl

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    该用户从未签到

    0

    主题

    5

    帖子

    32

    积分

    新兵

    Rank: 1

    威望
    0
    贡献
    0
    金币
    5
    钢镚
    0
    发表于 2015-11-25 14:18:27 | 显示全部楼层
    楼主好样的
    守望者AIR技术交流社区(www.airmyth.com)
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-24 01:34
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    0

    主题

    38

    帖子

    868

    积分

    上士

    Rank: 5Rank: 5

    威望
    20
    贡献
    0
    金币
    14
    钢镚
    0
    发表于 2019-2-24 02:05:21 | 显示全部楼层
    感谢分享!~
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2019-2-24 01:34
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    0

    主题

    38

    帖子

    868

    积分

    上士

    Rank: 5Rank: 5

    威望
    20
    贡献
    0
    金币
    14
    钢镚
    0
    发表于 2019-2-24 02:06:02 | 显示全部楼层
    感谢分享!~
    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-10-23 20:42 , Processed in 0.051198 second(s), 31 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

    快速回复 返回顶部 返回列表