我编写了一个简单的XML驱动的MP3播放器。我已经使用了Sound和SoundChannel对象和方法,但是我找不到一个制作进度条的方法。Flash MP3播放器中的进度条
我不需要加载进度我需要一首歌曲进度状态栏。
canbd有人帮助我吗?
谢谢。
更新:
Theres是代码。
var musicReq: URLRequest; var thumbReq: URLRequest; var music:Sound = new Sound(); var sndC:SoundChannel; var currentSnd:Sound = music; var position:Number; var currentIndex:Number = 0; var songPaused:Boolean; var songStopped:Boolean; var lineClr:uint; var changeClr:Boolean; var xml:XML; var songList:XMLList; var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, Loaded); loader.load(new URLRequest("musiclist.xml")); var thumbHd:MovieClip = new MovieClip(); thumbHd.x = 50; thumbHd.y = 70; addChild(thumbHd); function Loaded(e:Event):void{ xml = new XML(e.target.data); songList = xml.song; musicReq = new URLRequest(songList[0].url); thumbReq = new URLRequest(songList[0].thumb); music.load(musicReq); sndC = music.play(); title_txt.text = songList[0].title + " - " + songList[0].artist; loadThumb(); sndC.addEventListener(Event.SOUND_COMPLETE, nextSong); } function loadThumb():void{ var thumbLoader:Loader = new Loader(); thumbReq = new URLRequest(songList[currentIndex].thumb); thumbLoader.load(thumbReq); thumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded); } function thumbLoaded(e:Event):void { var thumb:Bitmap = (Bitmap)(e.target.content); var holder:MovieClip = thumbHd; holder.addChild(thumb); } prevBtn.addEventListener(MouseEvent.CLICK, prevSong); nextBtn.addEventListener(MouseEvent.CLICK, nextSong); playBtn.addEventListener(MouseEvent.CLICK, playSong); function prevSong(e:Event):void{ if(currentIndex > 0){ currentIndex--; } else{ currentIndex = songList.length() - 1; } var prevReq:URLRequest = new URLRequest(songList[currentIndex].url); var prevPlay:Sound = new Sound(prevReq); sndC.stop(); title_txt.text = songList[currentIndex].title + " - " + songList[currentIndex].artist; sndC = prevPlay.play(); currentSnd = prevPlay; songPaused = false; loadThumb(); sndC.addEventListener(Event.SOUND_COMPLETE, nextSong); } function nextSong(e:Event):void { if(currentIndex
而这里的长度和位置的代码。它在MovieClip中。这就是为什么我使用绝对路径来查找Sound对象。
this.addEventListener(Event.ENTER_FRAME, moveSpeaker);
var initWidth:Number = this.SpkCone.width;
var initHeight:Number = this.SpkCone.height;
var rootObj:Object = root;
function moveSpeaker(eventArgs:Event)
{
var average:Number = ((rootObj.audioPlayer_mc.sndC.leftPeak + rootObj.audioPlayer_mc.sndC.rightPeak)/2) * 10;
// trace(average);
// trace(initWidth + ":" + initHeight);
trace(rootObj.audioPlayer_mc.sndC.position + "/" + rootObj.audioPlayer_mc.music.length);
this.SpkCone.width = initWidth + average;
this.SpkCone.height = initHeight + average;
}
感谢杰里米,我已经试过这一点,但在lenght值总是甚至比这首歌的时候有位置值越大已完成。例如:在100%的位置:5944.308390022676长度:7392.65306122449你知道如何解决这个问题吗?谢谢。 – DeryckOE 2010-01-20 17:18:41
您如何通过输入框或其他事件监控回放? – JeremyFromEarth 2010-01-20 17:24:41
是的,通过ENTER_FRAME。 – DeryckOE 2010-01-20 17:30:59