矩阵烟花

                                                                     矩阵烟花

package

{

        import flash.display.Sprite;

  import flash.events.MouseEvent;

  import flash.events.Event;

  import flash.display.Bitmap;

  import flash.display.BitmapData;

  import flash.geom.ColorTransform;

  import flash.filters.BlurFilter;

  import flash.geom.Point;

  [SWF(width="500",height="450")]

    public class MyColorPicker extends Sprite

        {

                private var pixelNum:int = 500;

                private var bm:Bitmap;

                private var bmd:BitmapData;

                private var container:Sprite;

                private var pixelList:Array = new Array();

                private var gravity:Number = 0.1;

                private var ctf:ColorTransform = new ColorTransform(0.9, 0.96, 0.96);

                private var bf:BlurFilter = new BlurFilter(6, 6, 2);               

                public function MyColorPicker()

                {

                        init();

                }               

                private function init():void

                    {

                        container = new Sprite();

                        container.x = 50;

                        container.y = 0;

                        addChild(container);

                        bmd = new BitmapData(400,400,true,0xff000000);

                        bm = new Bitmap( bmd );

                        container.addChild( bm );

                        container.addEventListener(MouseEvent.CLICK, onClick);

                }

                private function onClick(event:MouseEvent):void

                     {

                        fire(container.mouseX, container.mouseY);

                }

                private function fire( toX:Number, toY:Number ):void

                {

                        for( var i:int=0; i<pixelNum; i++)

                        {  

                               var vo:PixelVO = new PixelVO();

                                vo.xpos = toX;

                                vo.ypos = toY;

                                vo.speedX = 2 - Math.random() * 4;

                                vo.speedY = 1 - Math.random() * 4;

                                pixelList.push(vo);

                        }

                        if( !this.hasEventListener(Event.ENTER_FRAME) )

                        {

                                this.addEventListener(Event.ENTER_FRAME, onEF);

                        }

                }               

                private function onEF(event:Event):void

                  {

                       bmd.lock();

                      bmd.colorTransform( bmd.rect, ctf );

                      bmd.applyFilter(bmd, bmd.rect, new Point(), bf);

                        for ( var i:int=0; i<pixelList.length; i++ )

                        {

                                var item:PixelVO = pixelList[i] as PixelVO;

                                item.xpos += item.speedX;

                                item.ypos += item.speedY;

                                item.speedY += gravity;

                                bmd.setPixel( item.xpos, item.ypos, 0xffffff );

                                if( item.ypos > 400 ){

                                        pixelList.splice( i, 1 );

                                        i--;

                                        item = null;

                                }

                        }

                        bmd.unlock()

                }  

 }

}

——————————————————————————————————————————————————————————————————————————

package

{

        public class PixelVO

        {

                public var xpos:Number;

                public var ypos:Number;

                public var speedX:Number;

                public var speedY:Number;

               

        }

}

转载于:https://www.cnblogs.com/klh5211314/archive/2012/11/04/2754264.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值