package { import flash.display.*; import flash.events.*; import flash.media.Sound; import flash.media.SoundChannel; import flash.media.SoundLoaderContext; import flash.media.ID3Info; import flash.net.URLRequest; import flash.external.ExternalInterface; import flash.utils.*; public class alarmSound extends Sprite{ private var alarm:Sound; private var mp3URL:String = "http://img.3bu.cn/ring/ring/201003041507952.mp3"; //"alarm_2.mp3"; private var song:SoundChannel; function alarmSound() { inited(); } private function inited():void { alarm = new Sound(); var req:URLRequest = new URLRequest(mp3URL); var buffer:SoundLoaderContext = new SoundLoaderContext(5*1000); alarm.addEventListener(Event.COMPLETE, completeHandler); alarm.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); alarm.addEventListener(ProgressEvent.PROGRESS, processHandler); alarm.addEventListener(Event.ID3, id3Handler); alarm.load(req, buffer); song = alarm.play(0, 0);//从0开始,循环1次 song.addEventListener(Event.SOUND_COMPLETE, playCompleteHandler); } private function processHandler(pro:ProgressEvent):void { var percent:Number = Math.floor(pro.bytesLoaded/pro.bytesTotal*100*100)/100; trace(pro.bytesLoaded + "---" + pro.bytesTotal + "已加载..." + percent + "%"); } private function playCompleteHandler(...args):void { //trace(alarm.length/1000 + "---" + song.position/1000); var estimatedTotal:Number = Math.ceil(alarm.length / (alarm.bytesLoaded / alarm.bytesTotal)); var position:Number = Math.round(100 * (song.position / estimatedTotal)); trace(estimatedTotal/1000/60 + "----" + position); } private function completeHandler(evt:Event):void { alarm.removeEventListener(Event.COMPLETE, completeHandler); //trace(alarm.length + "---" + song.position); } private function ioErrorHandler(evt:Event):void { } private function id3Handler(evt:Event):void { var id3:ID3Info = alarm.id3; trace('音乐名称:' + id3.songName); trace('专辑: ' + id3.album); trace('艺术家:' + id3.artist); } } }