I’m trying to get a streaming XML mp3 player to work, but I’m stumped ast to why it doesn’t.
Alright, first go here [COLOR=#22229c]http://www.files.bz/files/2622/test/mp3player.swf[/COLOR] … it works, right? Now go to [URL=“http://www.myspace.com/coldcereal”][COLOR=#22229c]http://www.myspace.com/coldcereal[/COLOR] … Notice I have the exact player set up there, but it doesn’t work… why? Is it a myspace thing?
I’m using MX by the way
here’s what I got under the hood:
// mp3Player class
mp3Player = function (songs, interF, reservedDepth) { if (songs != undefined && interF != undefined && reservedDepth != undefined && typeof songs == "object" && typeof interF == "object" && typeof reservedDepth == "number") {this.sound = new Object(new Sound(_root));this.songs = songs;this.player = interF;this.songs.index = 0;this.sound.stopped = false;this.sound.paused = false;this.player.songInfo.html = true;this.player.songInfo.condenseWhite = true;this.player.songInfo.autoSize = "center";this.safeDepth = reservedDepth-1;this.player.progressIndicator.offset = this.player.progressIndicator._x;this.loadHandler = _root.createEmptyMovieClip("LH", ++this.safeDepth);this.progressHandler = _root.createEmptyMovieClip("PH", ++this.safeDepth);this.volumeHandler = _root.createEmptyMovieClip("VH", this.safeDepth+3);this.volumeSlideHandler = _root.createEmptyMovieClip("VSH", ++this.safeDepth+4);this.indicateStatus(-1);this.setRollOver(1);this.setControls();this.showSongInfo();this.sound.loadSound(this.songs[this.songs.index].url, false);this.preload([{func:"startSong", param:[]}, {func:"indicateProgress", param:[]}, {func:"enableDrag", param:[]}, {func:"setInitialVolume", param:[100]}]);} else {trace("Invalid parameter(s) specified.");}};
mp3Player.prototype.stopProgressIndicator = function() {
delete this.progressHandler.onEnterFrame;
};
mp3Player.prototype.resetProgressIndicator = function() {
delete this.progressHandler.onEnterFrame;
this.player.progressIndicator._x = this.player.progressIndicator.offset;
};
mp3Player.prototype.disableDrag = function() {
delete this.player.progressIndicator.onPress;
delete this.player.progressIndicator.onRelease;
delete this.player.progressIndicator.onReleaseOutside;
};
mp3Player.prototype.indicateStatus = function(stat) {
var tar;
stat>0 ? tar=this.player.playButton : stat+1 ? tar=this.player.pauseButton : tar=this.player.stopButton;
this.player.statusIndicator.easeX(tar._x);
};
mp3Player.prototype.showSongInfo = function() {
var artist = this.songs[this.songs.index].artist;
var title = this.songs[this.songs.index].title;
var output = artist+" - "+title;
this.player.songInfo.htmlText = output;
};
mp3Player.prototype.startSong = function(returnFuncArray) {
this.setVolumeDrag(this.sound.volumeI);
this.sound.stop();
this.sound.start(0, 1);
this.indicateStatus(1);
this.indicateProgress();
if (returnFuncArray[0] != undefined) {
for (var i = 0; i<returnFuncArray.length; i++) {
this[returnFuncArray*.func].apply(this, returnFuncArray*.param);
}
}
};
mp3Player.prototype.next = function() {
this.songs.index++;
if (this.songs.index>this.songs.length-1) {
this.songs.index = 0;
}
this.showSongInfo();
this.sound.stop();
this.sound.loadSound(this.songs[this.songs.index].url, false);
this.preload([{func:"startSong", param:[]}, {func:"indicateProgress", param:[]}, {func:"enableDrag", param:[]}]);
};
mp3Player.prototype.setInitialVolume = function(x) {
var ref = this;
var tgt = x/100*this.player.volumeHeight;
var vitgt = this.player.volumeBar._y-tgt;
this.sound.volumeI = x;
this.player.volumeNR.text = 100;
this.sound.setVolume(x);
this.volumeHandler.onEnterFrame = function() {
ref.player.volumeIndicator._y = vitgt-(vitgt-ref.player.volumeIndicator._y)/1.2;
ref.player.volumeBar._height = tgt-(tgt-ref.player.volumeBar._height)/1.2;
if (ref.player.volumeIndicator._y>vitgt-1 && ref.player.volumeIndicator._y<vitgt+1 && ref.player.volumeBar._height>tgt-1 && ref.player.volumeBar._height<tgt+1) {
delete this.onEnterFrame;
}
};
};
mp3Player.prototype.setVolumeDrag = function(x) {
if (x>100) {
x = 100;
}
if (x<0) {
x = 0;
}
var ref = this;
var tgt = x/100*this.player.volumeHeight;
this.sound.volumeI = x;
this.sound.setVolume(x);
this.player.volumeNR.text = Math.round(x);
this.volumeHandler.onEnterFrame = function() {
ref.player.volumeBar._height = tgt-(tgt-ref.player.volumeBar._height)/1.2;
if (ref.player.volumeBar._height>tgt-1 && ref.player.volumeBar._height<tgt+1) {
delete this.onEnterFrame;
}
};
};
mp3Player.prototype.dragVolumeSlider = function() {
var ref = this;
var maxH = this.player.volumeHeight;
var vi = this.player.volumeIndicator;
var vb = this.player.volumeBar;
this.volumeSlideHandler.onEnterFrame = function() {
if (_root._ymouse>=vb._y-maxH-1 && _root._ymouse<=vb._y+1) {
vi._y = _root._ymouse;
ref.setVolumeDrag((vb._y-_root._ymouse)*100/maxH);
}
};
};
mp3Player.prototype.previous = function() {
this.songs.index--;
if (this.songs.index<0) {
this.songs.index = this.songs.length-1;
}
this.showSongInfo();
this.sound.stop();
this.sound.loadSound(this.songs[this.songs.index].url, false);
this.preload([{func:"startSong", param:[]}, {func:"indicateProgress", param:[]}, {func:"enableDrag", param:[]}]);
};
mp3Player.prototype.indicateProgress = function() {
var ref = this;
this.progressHandler.onEnterFrame = function() {
var played = ref.sound.position;
var total = ref.sound.duration;
ref.player.progressIndicator._x = ref.player.progressIndicator.offset+((played/total)*ref.player.loadWidth);
if (played == total && total>0) {
delete this.onEnterFrame;
ref.resetProgressIndicator();
ref.next();
}
};
};
mp3Player.prototype.preload = function(returnFuncArray) {
this.disableDrag();
var ref = this;
this.indicateStatus(-1);
this.loadHandler.onEnterFrame = function() {
var loaded = ref.sound.getBytesLoaded();
var total = ref.sound.getBytesTotal();
ref.player.loadBar._width = (loaded/total)*ref.player.loadWidth;
if (loaded == total && total>0) {
if (returnFuncArray[0] != undefined) {
for (var i = 0; i<returnFuncArray.length; i++) {
ref[returnFuncArray*.func].apply(ref, returnFuncArray*.param);
}
}
delete this.onEnterFrame;
}
};
};
mp3Player.prototype.setRollOver = function(grow) {
if (grow) {
this.player.previousButton.onRollOver = this.player.stopButton.onRollOver=this.player.pauseButton.onRollOver=this.player.playButton.onRollOver=this.player.nextButton.onRollOver=function () { this.grow();};
this.player.previousButton.onRollOut = this.player.stopButton.onRollOut=this.player.pauseButton.onRollOut=this.player.playButton.onRollOut=this.player.nextButton.onRollOut=function () { this.shrink();};
} else {
this.player.previousButton._alpha = this.player.stopButton._alpha=this.player.pauseButton._alpha=this.player.playButton._alpha=this.player.nextButton._alpha=30;
this.player.previousButton.onRollOver = this.player.stopButton.onRollOver=this.player.pauseButton.onRollOver=this.player.playButton.onRollOver=this.player.nextButton.onRollOver=function () { this.fadeIn();};
this.player.previousButton.onRollOut = this.player.stopButton.onRollOut=this.player.pauseButton.onRollOut=this.player.playButton.onRollOut=this.player.nextButton.onRollOut=function () { this.fadeOut();};
}
};
mp3Player.prototype.setControls = function() {
var ref = this;
var playB = this.player.playButton;
var prevB = this.player.previousButton;
var stopB = this.player.stopButton;
var nextB = this.player.nextButton;
var pauseB = this.player.pauseButton;
var volIndic = this.player.volumeIndicator;
volIndic.onPress = function() {
ref.dragVolumeSlider();
};
volIndic.onRelease = volIndic.onReleaseOutside=function () { delete ref.volumeSlideHandler.onEnterFrame;};
pauseB.onRelease = function() {
if (!ref.sound.stopped) {
ref.indicateStatus(0);
ref.sound.paused = true;
ref.sound.stopped = false;
ref.sound.pausedPosition = ref.sound.position;
ref.sound.stop();
ref.stopProgressIndicator();
}
};
stopB.onRelease = function() {
ref.indicateStatus(-1);
ref.sound.stopped = true;
ref.sound.paused = false;
ref.sound.stop();
ref.sound.pausedPosition = 0;
ref.resetProgressIndicator();
};
playB.onRelease = function() {
if (ref.sound.stopped) {
ref.indicateProgress();
ref.indicateStatus(1);
ref.sound.start(0, 1);
ref.sound.stopped = false;
} else if (ref.sound.paused) {
ref.indicateProgress();
ref.indicateStatus(1);
ref.sound.start(ref.sound.pausedPosition/1000, 1);
ref.sound.paused = false;
}
};
nextB.onRelease = function() {
ref.resetProgressIndicator();
ref.next();
};
prevB.onRelease = function() {
ref.resetProgressIndicator();
ref.previous();
};
};
mp3Player.prototype.enableDrag = function() {
var ref = this;
this.player.progressIndicator.onPress = function() {
ref.sound.stop();
ref.stopProgressIndicator();
ref.indicateStatus(0);
ref.sound.paused = true;
ref.sound.stopped = false;
total = ref.sound.duration;
this.onEnterFrame = function() {
this._x = _root._xmouse;
if (_root._xmouse<ref.player.loadBar._x) {
this._x = ref.player.loadBar._x;
}
if (_root._xmouse>ref.player.loadBar._x+ref.player.loadWidth) {
this._x = ref.player.loadBar._x+ref.player.loadWidth;
}
var percent = ((this._x-ref.player.loadBar._x)/ref.player.loadWidth)*100;
this.newPosition = (percent*total)/100;
};
};
this.player.progressIndicator.onRelease = this.player.progressIndicator.onReleaseOutside=function () { if (this.newPosition>=ref.sound.duration) {this.newPosition = ref.sound.duration-1;}delete this.onEnterFrame;ref.sound.start(ref.player.progressIndicator.newPosition/1000, 1);ref.sound.paused = false;ref.sound.stopped = false;ref.indicateStatus(1);ref.indicateProgress();};
};
// prototypes
MovieClip.prototype.fadeIn = function() {
this.onEnterFrame = function() {
this._alpha += 2;
this._alpha>=100 ? delete this.onEnterFrame : null;
};
};
MovieClip.prototype.fadeOut = function() {
this.onEnterFrame = function() {
this._alpha -= 2;
this._alpha<=30 ? delete this.onEnterFrame : null;
};
};
MovieClip.prototype.grow = function() {
var t = 150;
this.onEnterFrame = function() {
this._xscale = this._yscale=t-(t-this._xscale)/1.2;
if (this._xscale>t-1 && this._xscale<t+1) {
delete this.onEnterFrame;
}
};
};
MovieClip.prototype.shrink = function() {
var t = 100;
this.onEnterFrame = function() {
this._xscale = this._yscale=t-(t-this._xscale)/1.2;
if (this._xscale>t-1 && this._xscale<t+1) {
delete this.onEnterFrame;
}
};
};
MovieClip.prototype.easeX = function(t) {
this.onEnterFrame = function() {
this._x = t-(t-this._x)/1.2;
if (this._x>t-1 && this._x<t+1) {
delete this.onEnterFrame;
}
};
};
// creation of mp3Player class instance and junk
songsArray = new Array();
playerInterface = new Object();
playerInterface.playButton = this.playButton;
playerInterface.stopButton = this.stopButton;
playerInterface.pauseButton = this.pauseButton;
playerInterface.previousButton = this.previousButton;
playerInterface.nextButton = this.nextButton;
playerInterface.loadBar = this.loadbar;
playerInterface.loadWidth = 165;
playerInterface.progressIndicator = this.proIndic;
playerInterface.statusIndicator = this.statusIndic;
playerInterface.songInfo = this.songInfo;
playerInterface.volumeBar = this.volumeBar;
playerInterface.volumeNR = this.volumeNR;
playerInterface.volumeIndicator = this.volumeIndic;
playerInterface.volumeHeight = 60;
// ---------------------------------------------------
XMLRetrieve = new XML();
XMLRetrieve.ignoreWhite = true;
XMLRetrieve.load("onlineplaylist.xml");
XMLRetrieve.onLoad = function() {
for (var j = 0; j<this.firstChild.childNodes.length; j++) {
songsArray.push({title:this.firstChild.childNodes[j].attributes.title, artist:this.firstChild.childNodes[j].attributes.artist, [url:this.firstChild.childNodes](http://www.kirupa.com/forum/this.firstChild.childNodes)[j].firstChild.nodeValue});
}
player = new mp3Player(songsArray, playerInterface, 1);
};