//创建位图数据 var bmpData:BitmapData = new BitmapData(256,100, false, 0x000000); //创建模糊滤镜 var blurFilter:BlurFilter = new BlurFilter(2,1.6); var matrix:Array = new Array(); matrix = matrix.concat([1, 0, 0, 0, 0]);// 红 matrix = matrix.concat([0, 1, 0, 0, 0]);// 绿 matrix = matrix.concat([0, 0, 1, 0, 0]);// 蓝 matrix = matrix.concat([0, 0, 0, .85, 0]);// 透明度 var alphaFilter:ColorMatrixFilter = new ColorMatrixFilter(matrix); var bmp:Bitmap = new Bitmap(bmpData); bmp.blendMode = BlendMode.LIGHTEN; addChild(bmp); addEventListener(Event.ENTER_FRAME,enterFrameHandler); const PLOT_HEIGHT:int = 50; const CHANNEL_LENGTH:int = 256; var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("song.mp3"); snd.load(req); var channel:SoundChannel; channel = snd.play(); addEventListener(Event.ENTER_FRAME, enterFrameHandler); snd.addEventListener(Event.SOUND_COMPLETE, onPlaybackComplete); var bytes:ByteArray = new ByteArray(); function enterFrameHandler(e:Event) { SoundMixer.computeSpectrum(bytes, false, 0); var n:Number = 0; bmpData.applyFilter(bmpData,bmpData.rect,new Point(0, 0),alphaFilter); bmpData.draw(this); for (var i:int = 0; i < CHANNEL_LENGTH; i++) { n = (bytes.readFloat() * PLOT_HEIGHT); bmpData.setPixel((i * 2),(PLOT_HEIGHT - n),0xffCC00); } for (i = CHANNEL_LENGTH; i > 0; i--) { n = (bytes.readFloat() * PLOT_HEIGHT); bmpData.setPixel((i * 2),(PLOT_HEIGHT - n),0xccff00); } bmp.bitmapData.copyPixels(bmpData,bmpData.rect,new Point(0,0)); bmp.visible = true; bmpData.applyFilter(bmpData,bmpData.rect,new Point(0, 0),blurFilter); } //播放结束时删除enterFrameHandler方法 function onPlaybackComplete(event:Event) { removeEventListener(Event.ENTER_FRAME, enterFrameHandler); }