package {
import flash.display.*;
import flash.events.Event;
import flash.geom.Rectangle;
import flash.utils.*;
import flash.geom.Point;
import flash.filters.DisplacementMapFilter;
[SWF(backgroundColor="#000000", frameRate="10")]
public class PerlinTest extends Sprite
{
public var Pic:Bitmap;
private var w:int = 200;
private var h:int = 200;
private var a:Array = new Array();
private var cTime:int;
private var baseX:Number=0;
private var baseY:Number=0;
private var Octaves:uint=3;
private var RandomSeed:int=100;
private var stitching:Boolean=true;
private var fractal:Boolean=false;
public function PerlinTest(wide:int = 200, high:int = 200, seed:int = 0)
{
w = wide;
h = high;
Pic = new Bitmap();
var bmd:BitmapData = new BitmapData(w, h, false, 0x000000);
Pic.bitmapData = bmd;
Pic.smoothing = true;
if(!seed){
var clock:Date = new Date();
cTime = clock.getMilliseconds();
} else {
cTime = seed;
}
for(var i:int = 0; i < 8; i++){
var point1:Point = new Point(i * w * Math.sin( cTime * 1.3 ), i * -5000 * Math.cos( cTime * 1.3 ));
a.push(point1);
}
}
public function update():void{
Pic.bitmapData.perlinNoise(baseX, baseY, Octaves, RandomSeed, stitching, fractal);
Pic.bitmapData.perlinNoise(w / 10 ,h / 10,3, cTime, false, true, BitmapDataChannel.RED | BitmapDataChannel.BLUE , false,a );
for(var i:int = 0; i < 8; i++){
a[i].y += 20;
}
var dmf:DisplacementMapFilter = new DisplacementMapFilter(Pic.bitmapData, new Point(0, 0), 1, 1, 20, 20, "color");
// and apply it to our pic (instance name sourcePic)
Pic.filters = [dmf];
}
private function random(min:int = int.MIN_VALUE, max:int = int.MAX_VALUE):int {
var randomNum:int = Math.floor(Math.random() * (max - min + 1)) + min;
return randomNum;
}
}
}