如何在流模式下阻止mp3文件被闪存下载

时间:2008-09-16 17:52:56

标签: flash streaming

我有一个Flash播放器,它有一组通过xml文件加载的歌曲。

在您选择文件之前,文件不会开始流式传输。

如果我快速浏览8个文件中的每个文件,则闪存开始尝试同时下载8个文件中的每个文件。

我想知道是否有办法清除正在下载的文件。因此,如果有人决定点击许多曲目名称,那么带宽就不会被占用。

像mySound.clear这样的东西会很棒,或者是mySound.stopStreaming ..

以前有没有人遇到这个问题?

此致

克里斯

2 个答案:

答案 0 :(得分:1)

查看Sound.Close()

从文档:“关闭流,导致任何数据下载停止。调用close()方法后,不会从流中读取数据。

这是来自关联文档的source code example

package {
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.media.Sound;    
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.events.MouseEvent;
    import flash.errors.IOError;
    import flash.events.IOErrorEvent;

    public class Sound_closeExample extends Sprite {
        private var snd:Sound = new Sound();
        private var button:TextField = new TextField();
        private var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3");

        public function Sound_closeExample() {
            button.x = 10;
            button.y = 10;
            button.text = "START";
            button.border = true;
            button.background = true;
            button.selectable = false;
            button.autoSize = TextFieldAutoSize.LEFT;

            button.addEventListener(MouseEvent.CLICK, clickHandler);

            this.addChild(button);
        }

        private function clickHandler(e:MouseEvent):void {

            if(button.text == "START") {

                snd.load(req);
                snd.play();        

                snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);

                button.text = "STOP";
            }
            else if(button.text == "STOP") {

                try {
                    snd.close();
                    button.text = "Wait for loaded stream to finish.";
                }
                catch (error:IOError) {
                    button.text = "Couldn't close stream " + error.message;    
                }
            }
        }

        private function errorHandler(event:IOErrorEvent):void {
                button.text = "Couldn't load the file " + event.text;
        }
    }
}

答案 1 :(得分:0)

如果您执行以下操作:

MySoundObject = undefined;

应该这样做。