고3인데 방학때 이런거만들고있고 ㅋㅋㅋ...
어디 묵혀두기 아까워서 올려봐요
------------------------------------------
따라해보세요.
플래시켜고 as3으로 프로젝트 만드시고 원하시는 노래 라이브러리에 불러들인후 아래 코드를 프레임에 입력하고 라이브러리에서 사운드쪽 클래스를 bgm을 설정하신후 실행하면됩니다.
----------------------------------------
import flash..bitmapdata;
import flash..bitmap;
var bgm:sound = new bgm;
var channel:soundchannel = bgm.play( 0, 999 );
var ba:bytearray = new bytearray();
var i :int;
var scale:number = 20;
var seed : int = random( 1000 );
var paper:bitmapdata = new bitmapdata( stage.stagewidth/scale, stage.stageheight/scale, false, 0x000000 );
var screen:bitmapdata = new bitmapdata( stage.stagewidth, stage.stageheight );
var bitmap:bitmap = new bitmap( screen );
var shape:shape = new shape();
this.addchild( bitmap );
this.addchild( shape );
stage.addeventlistener( event.enter_frame, enterframeevent );
var pos : number = 1;
var power:number;
var spower:number = 0;
var powerarr:array = [];
var spowerarr:array = [];
for( i = 0; i < 512; ++ i ) powerarr[ i ] = spowerarr[ i ] = 0;
function enterframeevent ( e : event ) : void
{
power = ( channel.leftpeak + channel.rightpeak ) / 2;
spower *= 0.95;
if( spower < power ) spower = power;
soundmixer.computespectrum( ba, false, 0 );
for( i = 255; i >= 0; -- i )
{
powerarr[ i ] = ba.readfloat();
spowerarr[ i ] += ( powerarr[ i ] - spowerarr[ i ] ) * (power*0.4 + 0.05);
}
for( i = 256; i < 512; ++ i )
{
powerarr[ i ] = ba.readfloat();
spowerarr[ i ] += ( powerarr[ i ] - spowerarr[ i ] ) * (power*0.4 + 0.05);
}
shape.graphics.clear();
shape.graphics.moveto( 0, stage.stageheight/2 );
for( i = 0; i < 512; ++ i )
{
shape.graphics.linestyle( math.abs(spowerarr[ i ]) * 15, 0xffffff, power * power + 0.1, true );
shape.graphics.lineto( stage.stagewidth * i/512, stage.stageheight/2 - spowerarr[ i ] * (50+ (1-math.abs(255-i)/256) * 250 ) );
}
shape.filters = [ new blurfilter( 0, power * 10, 4 ) ];
pos += spower + 0.3;
var matrix:matrix = new matrix();
matrix.scale( scale, scale );
paper.perlinnoise( paper.width, paper.height, int(3+power*20), seed, true, true
, 7, false, [ new point( pos, 0 ), new point( 0, pos/4 ), new point( pos/2, pos/5 ), new point( pos/3, -pos/5 ) ] );
screen.colortransform( screen.rect, new colortransform( 0.6, 0, 1, 0.3 + spower * 0.3, 5, 0, 5, 1 ) );
screen.draw( paper, matrix, null, blendmode.add );
screen.draw( shape, null, null, blendmode.add );
screen.applyfilter( screen, screen.rect, new point(), new blurfilter( power * 20 + 8, power * 20 + 8, 4 ) )
}
function random ( n : number ) : int
{
return int( math.random() * n );
}
|