[转]pureas3飓风龙卷风粒子效果

http://wonderfl.net/c/oQH5/read



package  
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.Graphics;
    import flash.display.Shape;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.ColorTransform;
    import sliz.miniui.Link;
    /**
     * ...
     * @author sliz http://game-develop.net/blog
     */
    public class Wind extends Sprite 
    {
        private var p:Particle;
        private var view:Bitmap;
        private var pen:Shape = new Shape();
        private var ct:ColorTransform = new ColorTransform(1, 1, 1, 1, 50, 50, 50);
        public function Wind() 
        {
            view = new Bitmap(new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xffffff));
            addChild(view);
            var c:int = 200;
            while (c-->0) {
                var temp:Particle = new Particle();
                temp.data = c;
                if (p) {
                    temp.next = p;
                }
                p = temp;
            }
            addEventListener(Event.ENTER_FRAME, update);
            var link:Link = new Link("Wind @author sliz");
            addChild(link);
            link.x = 10;
            link.y = 10;
        }
        
        private function update(e:Event):void 
        {
            var graphics:Graphics = pen.graphics;
            graphics.clear();
            graphics.lineStyle(0);
            var x:Number = mouseX
            var y:Number = mouseY;
            var temp:Particle = p;
            while (temp) {
                temp.x += (x - temp.x) * 0.9;
                temp.y += (y - temp.y) * 0.9;
                var d:Number = Number(temp.data);
                graphics.drawEllipse(temp.x-d/2, temp.y, d,d/3);
                x = temp.x + (Math.random() * d - d / 2) / 4;
                y = temp.y - 3;
                temp = temp.next;
            }
            view.bitmapData.colorTransform(view.bitmapData.rect, ct);
            view.bitmapData.draw(pen);
        }
    }
}
class Particle 
{
    public var x:Number=0;
    public var y:Number = 0;
    public var data:Object;
    public var next:Particle;
}

你可能感兴趣的:(C++,c,.net,C#,Flash)