package { //引入相关的类 import flash.display.Sprite; import flash.display.Graphics; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundMixer; import flash.net.URLRequest; import flash.events.Event; import flash.utils.ByteArray; //自定义wave类,实现相关操作 public class wave extends Sprite { //定义所需变量 private var sound:Sound; private var ba:ByteArray; private var num:Number; private var sound_channel:SoundChannel; private var t:Number=0; public function wave() { sound=new Sound(); ba=new ByteArray(); sound.load(new URLRequest("test.mp3")); sound_channel=sound.play(); //添加事件侦听,用spectrum函数处理 this.addEventListener(Event.ENTER_FRAME,spectrum); } //侦听处理函数,调用绘制波形函数 private function spectrum(event:Event) { graphics.clear(); drawFunction(1,0xbb11aa); } //绘制波形主函数 private function drawFunction(thickness:Number,color:Number) { graphics.lineStyle(thickness,color,100); //获取当前声音频谱信息 SoundMixer.computeSpectrum(ba,false,0); //绘制声波曲线 for(var i=30;i<=stage.stageWidth-30;i++) { //以浮点形式读出当前声音频谱信息 num=ba.readFloat()*360; if(i>30) { var fi=stage.stageHeight/2+num; graphics.lineTo(i,fi); } else { trace(i); graphics.moveTo(30,stage.stageHeight/2+num); } } } } }