[ff]: "Slimy, slippery things"
forked from にょろにょろした何か _30000 worms (diff: 110)
[ff]: "Slimy, slippery things" ...or at least what google told me "にょろにょろした何か" means,,, haha
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)
}
}