Тема: Эффектище
Показать сообщение отдельно
Старый 16.12.2008, 18:10
flash33 вне форума Посмотреть профиль Отправить личное сообщение для flash33 Найти все сообщения от flash33
  № 2  
Ответить с цитированием
flash33
 
Аватар для flash33

Регистрация: Nov 2005
Сообщений: 1,155
Код 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;
	}	
}