In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

Luminous

Particleの復習です。
Get Adobe Flash player
by tensyokuzoku 04 Feb 2014
    Embed
/**
 * Copyright tensyokuzoku ( http://wonderfl.net/user/tensyokuzoku )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/leRF
 */

package 
{
    import flash.display.Sprite;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BlendMode;
    import flash.display.PixelSnapping;
    import flash.display.BitmapDataChannel;

    import flash.filters.BlurFilter;
    import flash.filters.BitmapFilterQuality;

    import flash.geom.Matrix;
    import flash.geom.Rectangle;
    import flash.geom.ColorTransform;
    import flash.geom.Point;

    import flash.events.Event;
    import frocessing.color.ColorHSV;

    [SWF(width = "465",height = "465",frameRate="60",backgroundColor = "0x00")]

    public class Main extends Sprite
    {

        public static const W:Number = 465;
        public static const H:Number = 465;
        public static const RECT:Rectangle = new Rectangle(0,0,W,H);

        private var particles:Vector.<Particle > ;
        private var canvas:BitmapData;
        private var glowBmd:BitmapData;
        private var perlin:BitmapData;
        private var randomSeed:Number = Math.random() * uint.MAX_VALUE;
        private var offsets:Array=[new Point(),new Point(),new Point()];

        private var num:int = 4000;


        private const RADIUS:int = 160;
        private var color:ColorHSV = new ColorHSV(0,0,0.5);

        public function Main()
        {

            canvas = new BitmapData(W,H,false,0x00);
            var bm:Bitmap = addChild(new Bitmap(canvas)) as Bitmap;

            glowBmd=new BitmapData(W/4,H/4,true,0x00);
            var g_bm:Bitmap = addChild(new Bitmap(glowBmd,"never",true)) as Bitmap;
            g_bm.scaleX = g_bm.scaleY = 4.0;
            g_bm.blendMode = BlendMode.OVERLAY;

            perlin = new BitmapData(W,H,true,0x00);
            
            particles=new Vector.<Particle> ();
            var i:int;
            var theta:Number;
            var r:Number;


            for (i=0; i<num; i++)
            {
                var p:Particle=new Particle ();
                theta = Math.random() * Math.PI * 2;
                r = Math.sqrt(Math.random()) * RADIUS;

                p.x = Math.cos(theta) * r + W / 2;
                p.y = Math.sin(theta) * r + H / 2;


                particles.push(p);

            }

            stage.addEventListener(Event.ENTER_FRAME ,update);

        }
        private function update(e:Event):void
        {
            layerMove();
            perlin.perlinNoise(W/4,H/4,3,randomSeed,false,true,BitmapDataChannel.RED | BitmapDataChannel.GREEN ,false,offsets);
            

            canvas.lock();
            canvas.applyFilter(canvas,RECT,new Point(),new BlurFilter(3,3,BitmapFilterQuality.MEDIUM ));

            var n:int = particles.length;

            while (n--)
            {
                var p:Particle = particles[n];
                var col:uint = perlin.getPixel(p.x,p.y);
                var r:Number = col >> 16 & 0xff;
                var g:Number = col >> 8 & 0xff;

                var ax:Number = (r - 125) * 0.5;
                var ay:Number = (g - 125) * 0.5;


                p.vx +=  ax / W;
                p.vy +=  ay / H;

                color.h -=  0.1;
                p.col = color.h;

                p.x +=  p.vx;
                p.y +=  p.vy;
                p.vx *=  0.99;
                p.vy *=  0.99;
                ax *=  0.98;
                ay *=  0.98;
                canvas.setPixel(p.x,p.y,p.col);

                var posX:Number = p.x;
                var posY:Number = p.y;

                (posX<0)?p.x=W:
                (posX>W)?p.x=0:0;
                (posY<0)?p.y=H:
                (posY>H)?p.y=0:0;

            }
            canvas.unlock();
            glowBmd.draw(canvas,new Matrix(0.25,0,0,0.25),new ColorTransform(1,1,1,.98,-1,-1,-1));

        }
        private function layerMove():void
        {

            offsets[2].y=(offsets[0].y+=2);
            offsets[1].x=(offsets[2].x-=2);


        }


    }


}

class Particle {
public var x:Number;
public var y:Number;
public var vx:Number;
public var vy:Number;
public var col:uint;


public function Particle()
{
    vx = vy = 0;



}




}