J'ai codé un simple lecteur MP3 piloté par XML. J'ai utilisé des objets et des méthodes Sound et SoundChannel mais je ne trouve pas de moyen de faire une barre de progression.Barre de progression dans un lecteur MP3 Flash
Je n'ai pas besoin d'une progression de chargement J'ai besoin d'une barre d'état de progression de morceau.
Canbd quelqu'un m'aider?
Merci.
MISE À JOUR:
Theres est le code.
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
Et voici le code pour la longueur et la position. C'est dans un MovieClip. C'est pourquoi j'utilise un chemin absolu pour trouver l'objet 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;
}
Merci Jeremy, je l'ai essayé mais la valeur de longueur est toujours plus grande que la valeur de la position même lorsque la chanson a été fini. Par exemple: Position à 100%: 5944.308390022676 Durée: 7392.65306122449 Savez-vous comment résoudre ce problème? Merci. – DeryckOE
Comment surveillez-vous la lecture ... via enter-frame ou un autre événement? – JeremyFromEarth
Oui, via ENTER_FRAME. – DeryckOE