开发者

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...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜