package { import flash.display.MovieClip; import flash.display.BitmapData; import flash.display.Bitmap; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.utils.ByteArray; import flash.net.URLRequest; import flash.events.Event; import flash.geom.Rectangle; import flash.geom.Point; import flash.filters.BlurFilter; import flash.filters.DisplacementMapFilter; class Pond { private var s:Sound = new Sound(); private var sc:SoundChannel = new SoundChannel(); private var ba:ByteArray = new ByteArray(); private var gfx:BitmapData; private var pic:Bitmap; private var ___width:uint; private var ___height:uint; private var z:Number = 0; function Pond(hostMC:MovieClip, mp3:String, __width:Number, __height:Number) { ___width = __width; ___height = __height; gfx = new BitmapData(__width, __height, false, 0x000000); pic = new Bitmap(gfx) hostMC.addChild(pic); s.load(new URLRequest(mp3)); sc = s.play(); hostMC.addEventListener(Event.ENTER_FRAME, processSpectrum); } private function processSpectrum(ev:Event) { SoundMixer.computeSpectrum(ba,true,0); var num:Number = ba.readFloat(); l = Math.pow(num,3)*___width/3; for (var i:int = 0; i < 1440; i++) { gfx.setPixel(Math.cos(i/180*Math.PI)*l+___width/2, Math.sin(i/180*Math.PI)*l/3+___height/2-50, i*0xffffff/2); } var blur:BlurFilter = new BlurFilter(5,1); var displace = new DisplacementMapFilter (gfx, new Point(0, 0), 2, 1, Math.sin(z)*3, Math.cos(z)+3); gfx.applyFilter(gfx, new Rectangle(0, 0, 454, 300), new Point(0, 0), displace); gfx.applyFilter(gfx, new Rectangle(0, 0, 454, 300), new Point(0, 0), blur); z += 0.02; } } }