[url]http://game-develop.net/blog/?p=95 [/url]
package
{
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
/**
* ...
* @author sliz http://game-develop.net/blog
*/
public class Main extends Sprite
{
public function Main():void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
var width:uint = 500;
var height:uint = 500;
var view:Bitmap = new Bitmap(new BitmapData(width, height));
for (var i:int = 0; i < view.bitmapData.width;i++ ) {
for (var j:int = 0; j < view.bitmapData.height; j++ ) {
var c1:uint = 0xf19553;
var c2:uint = 0xf5984f;
var w:Number = 0.2;
var a:Number = Math.sin(i / w);
view.bitmapData.setPixel(i, j,mix(c1,c2,a));
}
}
addChild(view);
var map:BitmapData = view.bitmapData.clone();
map.perlinNoise(10, 100, 1, 1, true, true, 1);
view.filters = [new DisplacementMapFilter(map, new Point(), BitmapDataChannel.RED, BitmapDataChannel.BLUE, 20, 20, "wrap", 0xff0000)];
}
private function mix(x:uint, y:uint, a:Number):uint {
var r:uint = Math.min(0xff, (x >> 16) * (1 - a) + (y >> 16) * a) << 16;
var b:uint = Math.min(0xff, (x >> 8 & 0xff) * (1 - a) + (y >> 8 & 0xff) * a) << 8;
var g:uint = Math.min(0xff, (x & 0xff) * (1 - a) + (y & 0xff) * a);
return r + b + g;
}
}
}