I originally built this in Flash 8, then moved the files over to CS4.
Hi, I have a list component where I've loaded song files through xml and everything is working great.
I have now been trying to figure out how to make it play one of the 8 files randomly when it starts playing, instead of it always starting with a specified track (currently track one obviously). So each time a visitor comes to the site it is a different song.
I found a few things on math for AS3 but nothing has worked for this AS2 code that I have tried so far. What am I missing?
this._lockroot = true;
//make textfields autosize
album_txt.autoSize = "left";
artist_txt.autoSize = "left";
title_txt.autoSize = "left";
//create sound object
var songInterval:Number;
var amountLoaded:Number;
var mySound:Sound;
var nextTrack:Number;
//this will contain all the track details from the xml file
var tracks_array:Array = new Array();
var totalTracks:Number;
//create the XML object and populate with track details
var jukebox_xml:XML = new XML();
jukebox_xml.ignoreWhite = true;
var RootNode:XMLNode;
jukebox_xml.onLoad = function(success:Boolean) {
if (success) {
RootNode = this.firstChild;
totalTracks = RootNode.childNodes.length;
populateTracksArray();
} else {
trace("error loading xml file");
}
};
jukebox_xml.load("tracks.xml");
function populateTracksArray():Void{
for(var i:Number=0; i < totalTracks;i++){
tracks_array[i] = RootNode.childNodes[i];
tracks_array[i].source = RootNode.childNodes[i].attributes.source;
tracks_array[i].artist = RootNode.childNodes[i].attributes.artist;
tracks_array[i].album = RootNode.childNodes[i].attributes.album;
tracks_array[i].title = RootNode.childNodes[i].attributes.title;
}
//play first track
playTrack(tracks_array[0].source,tracks_array[0].artist,tracks_array[0].album,tracks_array[0].title,true);
//populate list component with song titles
populateList();
}
function playTrack(source, artist, album, title, stream):Void{
artist_txt.text = artist;
album_txt.text = album;
title_txt.text = title;
mySound = new Sound();
mySound.onSoundComplete = function():Void{
//----LETS NEXT SONG PLAY---------
if(continous_comp.selected){
if(list_comp.selectedIndex < (totalTracks -1)){
list_comp.selectedIndex +=1;
}else{
list_comp.selectedIndex = 0;
}
playTrack(tracks_array[list_comp.selectedIndex].source,tracks_array[list_comp.selectedIndex].artist,tracks_array[list_comp.selectedIndex].album,tracks_array[list_comp.selectedIndex].title, true);
}
}
mySound.loadSound(source,stream);
clearInterval(songInterval);
songInterval = setInterval(songProgress,100);
}
function populateList():Void{
for(var i:Number=0; i<totalTracks;i++){
list_comp.addItem(tracks_array[i].title,tracks_array[i].source);
}
_root.list_comp.selectedIndex = 0;
}
//--------create a listener for the list component------------
var compListener:Object = new Object();
list_comp.addEventListener("change", compListener);
compListener.change = function(info:Object):Void{
playTrack(info.target.value,tracks_array[list_comp.selectedIndex].artist,tracks_array[list_comp.selectedIndex].album,tracks_array[list_comp.selectedIndex].title, true);
}