Flash mp3 player throws Error 2032 - Thinking URLRequest is the culprit?
I am trying to set up an audio player for a website I am working on, and I keep running into this Error 2032. The .swf is located in my main folder along with my songlist file. The song files themselves are located in a subfolder called songs/
I am not sure what could be causing this, and any input would be helpful.
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.ArrayList;
import mx.collections.XMLListCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.utils.ArrayUtil;
private var sound:Sound; // Mp3 File
private var soundChannel:SoundChannel; // Reference to playing channel
private var pausePosition:Number; // Current play position (time)
private var percent:Number; // Current played percentage
private var isPlaying:Boolean = false; // Is the mp3 playing?
private var isLoaded:Boolean = false; // Is the mp3 loaded?
//private var updateSeek:Timer = new Timer(500); // Timer for updating the seek bar
private var currentSong:String;
private var index:int;
private var start:Boolean = true;
private var songs:Array;
private function init():void {
grabSongs();
}
private function grabSongs():void{
var theLoader:URLLoader = new URLLoader();
var theRequest:URLRequest = new URLRequest("songlist.txt");
theLoader.load(theRequest);
theLoader.addEventListener(Event.COMPLETE, loadComplete);
}
private function loadComplete(theEvent:Event):void{
songs = theEvent.target.data.split("\n");
currentSong = songs[0];
index = 0;
}
private function playPause(e:Event = null):void {
// Song playing?
if(isPlaying) {
// Save the current position in the track, stop playback, change button icon
pausePosition = soundChannel.position;
soundChannel.stop();
this.btnPlay.label = "Play";
// If the URL has been changed but not loaded, hide seekbar
// Song is not playing?
} else {
if(!isLoaded) {
// If the song isn't loaded yet, set up a new sound load request
if(start == true){
start = false;
}
sound = new Sound();
sound.load(new URLRequest("songs/" + currentSong));
// Add an event listener to check for song load complete event
sound.addEventListener(Event.COMPLETE, songLoaded);
this.btnPlay.label ="Pause";
} else {
// The song IS loaded, so play it
soundChannel = sound.play(pausePosition);
this.btnPlay.label = "Pause";
}
}
// Regardless of playing state, change it now to the opposite
isPlaying = !isPlaying;
}
private function songLoaded(e:Event):void {
// Remove load event listener
sound.removeEventListener(Event.COMPLETE, songLoaded);
// Play the song
soundChannel = sound.play(0);
// Song is loaded
isLoaded = true;
}
private function prev(e:Event = null):void {
if(start == false){
if(index == 0){
index = songs.length - 1;
}else{
index--;
}
currentSong = songs[index];
isPlaying = true;
isLoaded = false;
playNew(e);
}
}
private function next(e:Event = null):void {
if(start == false){
if(index == songs.length - 1){
index = 0;
}else{
index++;
}
currentSong = songs[index];
isPlaying = true;
isLoaded = false;
playNew(e);
}
}
private function playNew(e:Event = null):void {
soundChannel.stop();
sound = new Sound();
sound.load(new URLRequest("songs/" + current开发者_如何学PythonSong));
// Add an event listener to check for song load complete event
sound.addEventListener(Event.COMPLETE, songLoaded);
this.btnPlay.label = "Pause";
}
]]>
</fx:Script>
<s:Button id="btnPrev" label="Previous" chromeColor="#000000" focusColor="#000000" color="#8D1111" enabled="true" click="{prev(event)}" height="20" width="80" x="0" y="0"/>
<s:Button id="btnPlay" label="Play" chromeColor="#000000" focusColor="#000000" color="#8D1111" enabled="true" click="{playPause(event)}" height="20" width="80" x="81" y="0"/>
<s:Button id="btnNext" label="Next" chromeColor="#000000" focusColor="#000000" color="#8D1111" enabled="true" click="{next(event)}" height="20" width="80" x="162" y="0"/>
This works locally on my laptop, but when I upload the swf it throws error 2032.
Thanks
Update
So the setup is exactly as FlexFiend answered, along with http://localhost/FlexStuff/songs/ I tried checking the log file of the flash debugger and this was my message:
Error #2032: Stream Error. URL: http://www.mywebsite.com/framework_4.0.0.14159.swf
I am very unfamiliar with what this means, but maybe its causing my problems?
Verify the path of "songlist.txt" as being on the local server. If it is on a remote server, then you have to investigate cross-domain issues. But if that were the case, it wouldn't even try to read it but would instead let you know of the policy violation I assume.
The "songlist.txt" file should be in the same directory as the swf you are accessing on your server. i.e
http://localhost/FlexStuff/Swfalicious.html (the wrapper )
http://localhost/FlexStuff/songlist.txt
http://localhost/FlexStuff/Swfalicious.swf ( the actual swf file)
So the setup is exactly as FlexFiend answered, along with http://localhost/FlexStuff/songs/ I tried checking the log file of the flash debugger and this was my message:
Error #2032: Stream Error. URL: http://www.mywebsite.com/framework_4.0.0.14159.swf
I am very unfamiliar with what this means, but maybe its causing my problems?
The 'framework_4.0.0.14159.swf' was one of about 6 swf files that I apparently had to also upload to my server to get this swf file to work...which I did not think was necessary?? Once uploaded however it does work. This is really weird since I was under the impression I just had to upload the swf I created, not a bunch of helper files...
精彩评论