
Код AS1/AS2:
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
var noise:BitmapData;
var varray:Array = new Array(512);//массив содержащий шум
var image;
var bitmapData:BitmapData;
var dir:Number;
var z:Number = 0;
function change() {
noise.perlinNoise(100, 40, 3, Math.random()*100, false, true, 1, true);
}
this.onEnterFrame = compile;
bitmapData = new BitmapData(512, 256, false, 0);
image = _root.createEmptyMovieClip("image", 1);
image.attachBitmap(bitmapData, 1);
var recalc = bitmapData.clone();
noise = new BitmapData(512, 256, false, 16777215);
change();
setInterval(change, 1000);
function compile() {
var arr:Array = new Array();;
var i:Number = 0;
var m:Matrix = new Matrix();;
var d:Number = 1.1;;
var tx:Number;
var bfilter:BlurFilter;
var disp:DisplacementMapFilter;
generateArray(varray);
while (i++ <512) {
val = varray[i];
bitmapData.setPixel(Math.sin(i/256*Math.PI)*60*val+Math.sin(z)*60+256, Math.cos(i/256*Math.PI)*60*val+Math.cos(z)*60+128, 26367 | val*360 << 8);
if (_loc_3<500) {
}
if (l>0.4) {
bitmapData.setPixel(Math.sin(i/256*Math.PI)*60*val+Math.sin(z)*60+256+Math.random()*10-5, Math.cos(i/256*Math.PI)*60*val+Math.cos(z)*60+128+Math.random()*10-5, 16777215);
}
}
z += 0.01;
m.scale(d, d);
tx = -(d-1)/2;
m.translate(tx*512, tx*256);
recalc.draw(bitmapData, m);
bitmapData.draw(recalc);
bfilter = new BlurFilter(3, 3);
bitmapData.applyFilter(bitmapData, new Rectangle(0, 0, 512, 256), new Point(0, 0), bfilter);
disp = new DisplacementMapFilter(noise, new Point(0, 0), 1, 2, 20, 20);
disp.mode = "clamp";
bitmapData.applyFilter(bitmapData, new Rectangle(0, 0, 512, 256), new Point(0, 0), disp);
}
function generateArray(arr) {
for (var i = 0; i<512; i++) {
arr[i] = 1-Math.random()*2;
}
}