I tried adding the combo box component to my mp3 player but ran into a little problem. When i choose an option from my combo list it just counts +1 in my song array. I figured the problem was in my playSong function but I tried changing some of that code around and it didn’t seem to help matters. Anyone got any tips or answers I’d love to hear them.
songs.xml
<?xml version=“1.0” encoding=“iso-8859-1”?>
<songs>
<song url=“changes.mp3” artist=“Tupac Shakur” track=“Changes” time=“269” />
<song url=“hipHopHooray.mp3” artist=“Naughty By Nature” track=“Hip Hop Hooray” time=“263” />
<song url=“hypnotize.mp3” artist=“Notorius B.I.G” track=“Hypnotize” time=“243” />
<song url=“firstOfTheMonth.mp3” artist=“Bone Thugs And Harmony” track=“First Of Da Month” time=“314” />
</songs>
Song.as
class Song{
public var earl:String;
public var artist:String;
public var track:String;
public var uime:Number;
public function Song(e:String, a:String, t:String, u:Number){
earl = e;
artist = a;
track = t;
uime = u;
}
}
**[U]
mp3Player.as[/U]**
_global.styles.ComboBox.setStyle(“backgroundColor” , 0x000000);
_global.styles.ComboBox.setStyle(“color” , 0xcccccc);
//Setup Sound Object
var s:Sound = new Sound();
s.onSoundComplete = playSong;
s.setVolume(75);
//Array of songs sa=Song Array
var sa:Array = new Array();
// Currently Playing Song CPS= currently playing song
var cps:Number = -1;
//Position of music
var pos:Number;
//Load in XML songs
var xml:XML = new XML();
xml.ignoreWhite = true;
xml.onLoad = function() {
var nodes:Array = this.firstChild.childNodes;
for(var i=0;i<nodes.length;i++)
{
mp3List.addItem(nodes*.attributes.track , nodes*.attributes.url);
sa.push(new Song(nodes*.attributes.url, nodes*.attributes.artist, nodes*.attributes.track, nodes*.attributes.time));
}
playSong(mp3List.getItemAt(0).data);
mp3List.selectedIndex=0;
};
var songList:Object = new Object();
songList.change = function(){
playSong(mp3List.getItemAt(mp3List.selectedIndex).data);
trace(“Index Number” +(mp3List.selectedIndex));
}
mp3List.addEventListener(“change”,songList);
xml.load(“songs.xml”);
//Play the MP3 File
function playSong():Void{
s = new Sound();
s.onSoundComplete = playSong;
s.setVolume(dist);
mute.gotoAndStop(‘on’);
if(cps == sa.length-1){
cps=0;
s.loadSound(sa[cps].earl,true);
}else{
s.loadSound(sa[++cps].earl,true);
}
trackInfo.text = sa[cps].artist + " - "+ sa[cps].track;
playPause.gotoAndStop(‘pause’);
}
function prevSong():Void {
s = new Sound();
s.onSoundComplete = playSong;
if (cps == 0) {
cps = sa.length - 1;
s.loadSound(sa[cps].earl, true);
} else {
s.loadSound(sa[–cps].earl, true);
}
trackInfo.text = sa[cps].artist + " - " + sa[cps].track;
playPause.gotoAndStop(“pause”);
}
//Volume
var dist:Number = 75;
volScrub._xscale = dist;
volPercent.text = volScrub._xscale;
volBotton.onPress = function(){
adjustSound();
this.onMouseMove = adjustSound;
}
volBotton.onRelease = volBotton.onReleaseOutside = function (){
delete this.onMouseMove;
volScrub.gotoAndStop(1);
}
function adjustSound() {
volScrub.gotoAndStop(2);
dist = ((_root._xmouse-volBotton._x)/volBotton._width)*100;
if (dist>=0 && dist<=100) {
volScrub._xscale = dist;
s.setVolume(dist);
volPercent.text = Math.round(volScrub._xscale);
//un comment to get the vol numbers moving
//volPercent._x = Math.round(_root._xmouse);
}
}
//Pauses the music
function pauseIt():Void{
pos = s.position;
s.stop();
}
//Plays the music
function unPauseIt():Void{
s.start(pos/1000);
}
//Music Controls
//Play Pause toggle
playPause.onRollOver = function(){
if(this._currentframe == 1)this.gotoAndStop(‘pauseOver’);
else this.gotoAndStop(‘playOver’);
}
playPause.onRollOut = playPause.onReleaseOutside = function(){
if(this._currentframe == 10)this.gotoAndStop(‘pause’);
else this.gotoAndStop(‘play’);
}
playPause.onRelease = function(){
if(this._currentframe == 10)
{
this.gotoAndStop(‘playOver’);
this._parent.pauseIt();
}else{
this.gotoAndStop(‘pauseOver’);
this._parent.unPauseIt();
}
}
//Mute volume on and off toggle
mute.onRollOver = function(){
if(this._currentframe == 1)this.gotoAndStop(‘onOver’);
else this.gotoAndStop(‘offOver’);
}
mute.onRollOut = mute.onReleaseOutside = function(){
if(this._currentframe == 10)this.gotoAndStop(‘on’);
else this.gotoAndStop(‘off’);
}
mute.onRelease = function(){
if(this._currentframe == 10)
{
this.gotoAndStop(‘offOver’);
s.setVolume(0);
}else{
this.gotoAndStop(‘onOver’);
s.setVolume(75);
}
}
//Next Button
next.onRollOver = function(){
this.gotoAndStop(‘nextOver’);
}
next.onRollOut = next.onReleaseOutside = function(){
this.gotoAndStop(‘next’);
}
next.onRelease = function(){
this._parent.playSong();
}
//Previous Button
prev.onRollOver = function(){
this.gotoAndStop(‘nextOver’)
}
prev.onRollOut = prev.onReleaseOutside = function(){
this.gotoAndStop(‘next’);
}
prev.onRelease = function(){
this._parent.prevSong();
}
//Audio Loader Bar / Scrubber
var audioInterval = setInterval(audioStatus,100);
var amountLoaded:Number;
function audioStatus(){
amountLoaded = s.getBytesLoaded()/s.getBytesTotal()
loader.loadbar._width = amountLoaded * 72
var scrubPos = s.position/(sa[cps].uime * 1000) * 72
loader.scrub._x = scrubPos
}
//Scrub Drag
loader.scrub.onPress = function():Void{
pauseIt();
clearInterval(scrubPos);
clearInterval(audioInterval);
loader.scrub.startDrag(false, 0, this._y,72, this._y);
}
loader.scrub.onRelease = loader.scrub.onReleaseOutside = function():Void{
pos = ((loader.scrub._x/72) * (sa[cps].uime))
scrubPos = ((pos / (sa[cps].uime)) * 72)
if (((s.getBytesLoaded/s.getBytesTotal) * 72) < scrubPos){
pos = ((s.duration / 1000) / (sa[cps].uime) * 72)
scrubPos = (((s.getBytesLoaded/s.getBytesTotal) * 72))
unPauseIt();
loader.scrub.stopDrag();
audioInterval = setInterval(audioStatus,100);
audioStatus();
}else{
s.start(pos);
loader.scrub.stopDrag();
audioInterval = setInterval(audioStatus,100);
audioStatus();
}
}