[ff]: "Slimy, slippery things"

by bradsedito forked from にょろにょろした何か _30000 worms (diff: 110)
[ff]: "Slimy, slippery things"

...or at least what google told me "にょろにょろした何か" means,,, haha
♥0 | Line 137 | Modified 2012-07-12 04:49:55 | MIT License
play

ActionScript3 source code

/**
 * Copyright bradsedito ( http://wonderfl.net/user/bradsedito )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/2Pk1
 */




package 
{
    import flash.display.Sprite;
    import net.hires.debug.Stats;
   
    [SWF(backgroundColor=0x0, width=465, height=456, frameRate=30)]
   
   
    public class FlashTest extends Sprite 
    {

        public function FlashTest() 
        {
            addChild( new PixelMap(465,465) );
            addChild( new Stats() )
        }
    }
}




import flash.events.Event;
import flash.geom.Point;
import flash.display.BitmapData;
import flash.display.Bitmap;


class PixelMap extends Bitmap
{
    private var black:BitmapData;
    private var size:int = 5000; // 10000
    private var pixels:Vector.<Pixel> = new Vector.<Pixel>();
    
    
    function PixelMap(width:int,height:int):void
    {
        black = new BitmapData(width,height,false,0x000000);
        super( new BitmapData(width,height,false,0x000000) );
        
        this.addEventListener("enterFrame",onFrame);
    
        for(var i:int=0;i<size;i++) 
        {
            var depth:uint;
            depth = 6000;
            new Pixel(pixels,width*Math.random(), height*Math.random(),0xD50000*Math.random());
            //new Pixel3D(pixels,width*Math.random(), height*Math.random(),Math.random()*1000,0xD50000*Math.random());
        }
        
        pixels.fixed = true;
    }
    
    private function onFrame(e:Event):void
    { 
        drow(); 
        move(); 
     }
     
    private function drow():void
    {
        var b:BitmapData = bitmapData;
        b.lock();
        
        for each( var pixel:Pixel in pixels )
        {
            pixel.draw( b );
        }
        
        b.merge(black,b.rect,new Point(),10,10,8,255);
        b.unlock();
    }
    
    private function move():void
    {
        var mx:int = mouseX;
        var my:int = mouseY
        for each( var pixel:Pixel in pixels )
        {
            var deg:Number = Math.atan2(pixel.dx,pixel.dy);
            var x:Number = pixel.x-mx; var y:Number = pixel.y-my;
            var r:Number = Math.sqrt(x*x+y*y);
            deg = ( deg*15 + r ) /16
            pixel.dx = Math.sin(deg); pixel.dy = Math.cos(deg);
            pixel.move();
        }
    }
}



class Pixel
{
    public  var  x:Number;
    public  var  y:Number;
    public  var  dx:Number = 0;
    public  var  dy:Number = 1;
    private var  parent:Vector.<Pixel> = new Vector.<Pixel>();
    private var  green:uint,blue:uint,red:uint,color:uint;
    
    public function Pixel(  target:Vector.<Pixel>, x:int, y:int, color:uint  )
    {
        parent = target;
        parent.push( this );
        this.x = x; 
        this.y = y;
        setColor(color);
    }
    public function draw( data:BitmapData ):void{ data.setPixel(x,y,color); }
    public function move():void{ x+=dx; y+=dy; }
    public function setColor( color:uint ):void{
        this.color = color;
        red = color >>> 16;
        green = (color - red) >>> 8
        blue = (color - red - green)
    }
}



class Pixel3D
{
    public  var  x:Number;
    public  var  y:Number;
    public  var  z:Number;
    public  var  dx:Number = 0;
    public  var  dy:Number = 1;
    public  var  dz:Number = 1;
    public  var  vx:Number = 0;
    public  var  vy:Number = 0;
    public  var  vz:Number = 0;
    public  var  tx:Number = 1;
    public  var  ty:Number = 1;
    public  var  tz:Number = 1;
    private var  parent:Vector.<Pixel> = new Vector.<Pixel>();
    private var  green:uint;
    private var  blue:uint;
    private var  red:uint;
    private var  color:uint;
    
    public function Pixel3D(  target:Vector.<Pixel>, x:int, y:int, z:int, color:uint  )
    {
        parent = target;
        parent.push( this );
        this.x = x; 
        this.y = y;
        this.z = z;
        setColor( color );
    }
    public function draw( data:BitmapData ):void
    { 
        data.setPixel(x,y,color); 
    }
    
    public function move():void
    { 
        x += dx; 
        y += dy; 
        z += dz; 
    }
    
    public function setColor( color:uint ):void{
        this.color = color;
        red = color >>> 16;
        green = (color - red) >>> 8
        blue = (color - red - green)
    }
}