Comment arrêter le téléchargement d'un fichier mp3 par flash en mode streaming

StackOverflow https://stackoverflow.com/questions/75052

  •  09-06-2019
  •  | 
  •  

Question

J'ai un lecteur Flash qui contient un ensemble de chansons chargées via un fichier xml.

Les fichiers ne commencent pas à recevoir le flux tant que vous n’en choisissez pas.

Si je parcours rapidement chacun des 8 fichiers, Flash commence à essayer de télécharger chacun de ces 8 fichiers simultanément.

Je me demande s’il existe un moyen de supprimer le fichier en cours de téléchargement. Pour que la bande passante ne soit pas consommée si quelqu'un décide de cliquer sur de nombreux noms de pistes.

Quelque chose comme mySound.clear serait génial, ou mySound.stopStreaming ..

Quelqu'un at-il déjà eu ce problème?

Cordialement,

Chris

Était-ce utile?

La solution

Découvrez Sound.Close () .

A partir de la documentation: " Ferme le flux, ce qui provoque l'arrêt du téléchargement de données. Aucune donnée ne peut être lue dans le flux après l’appel de la méthode close (). "

Il s'agit du exemple de code source des documents liés:

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;
        }
    }
}

Autres conseils

Si vous faites quelque chose comme:

MySoundObject = undefined;

Cela devrait le faire.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top