Entladen swf-Datei mit Aufruf der unloadAndStop () - Methode, aber auch video-Geräusche bleiben hörbar
Ich habe versucht, viele Ansätze zu entladen meine swf, aber ohne Erfolg, das video klingt in meinen laoded swf zu spielen halten, selbst wenn die swf geladen wurde.
Habe ich einen universal loader wie folgt:
var loader:Loader = new Loader();
Ich dann laden verschiedener swf-Datei in einen MovieClip namens " mov_contentLoader, zum Beispiel die video-swf-Datei geladen wird, wie folgt:
loader.load(new URLRequest("video.swf")); //assign SWF url to loader
mov_contentLoader.addChild(loader); //add loaded content to movi clip
Dann habe ich eine generische "exit" - Taste, abhängig vom Zustand der Anwendung, die bestimmte Fenster geschlossen sind, ist die swf-Datei entladen etc. Für mein video.swf-Datei, wenn Sie die Schaltfläche beenden geklickt wird, nenne ich Aufruf der unloadAndStop (); - Methode der loader wie folgt:
loader.unloadAndStop(); //unload all content, do some garbage cleanup
mov_contentLoader.removeChildAt(0); //just to be safe, a second layer of reassurance ??
Die SWF entladen wird, aber für das Leben von mir ich kann NICHT die sounds zu stoppen! Ich selbst Griff zum hinzufügen von stage-Listener auf dem video.swf zu hören für ein spannendes Zustand, aber immer noch nicht aufhören, video-sounds.
Wenn ich Sie laden das video.swf wieder und spielen ein anderes video, das zwei soundtracks spielen ontop von einander.
Jede Anleitung, wie immer, ist sehr anerkannt und geschätzt.
Simon
Du musst angemeldet sein, um einen Kommentar abzugeben.
Geeigneter Weise zu handhaben, ist auf Programm eine Funktion zerstören, was auch immer geladen Inhalte, die Sie haben, und dann nennen Sie es, bevor Sie entladen, der Inhalt. In der destroy-Funktion der geladenen swf-sollte die Verantwortung für die eigenen Unternehmen in Bezug auf...
SoundMixer.stopAll () - das ist keine geeignete Lösung. Vielmehr kann es werden, wenn Sie die Einstellung der Parameter von dem, was ist "akzeptabel" als eine Rüttelnde Benutzer-Erfahrung, aber wenn Sie schreiben eine 3rd-party-swf, die geladen werden, jemand anderes die Anwendung, die Sie werden die meisten sicherlich werden verantwortlich für die Reinigung Ihrer eigenen sound-mess-und SoundMixer-töten nicht nur Ihre Geräusche, aber die Geräusche vom Lader, und das ist ein sicher Feuer Weg, um ärger zu Ihren Gastgebern.
loader.content.destroy();
oder speichern loader.Inhalt in eine lokale variable in der swf, die die be-und call-zerstören von dort aus.init
und eininert
Stil Kopplung von Funktionen... oder andere mal die geladene swf-Datei möglicherweise nichts mehr als ein repository von instantiatable movieclips, die geworfen werden kann entfernt, wie nötig.Nach viel recherche habe ich dieses problem gelöst haben. In der Hoffnung, dass dies jemand machen das Leben viel einfacher, hier war das Problem:
Den
unloadAndStop();
Methode entfernt alle Ereignis-Listener, Instanzen, Objekte usw. aus der geladenen SWF. In meinem Fall hatte ich videos, und WENN das video noch abgespielt wird, wenn der Benutzer beendet (und der geladenen, entladen der Inhalte) die sounds tragen würden. Es scheint, dass eine Sache, dieunloadAndStop();
Funktion NICHT tut, ist alle sounds stoppen.Die Lösung? Ich mit einem Ereignis-listener, um meine Lader, und nach dem Inhalt wurde erfolgreich ENTLADEN, rief ich die
SoundMixer.stopAll();
- Funktion gewährleistet keine sounds gespielt! Dies bedeutet jedoch, dass, wenn Sie hatte eine ambient-hintergrund-klingt alles zusammen, Sie würden ebenfalls aufhören. Man könnte sogar noch weiter gehen und Holen Sie sich die aktuelle Zeit von Ihrem ambient-sounds und einfach "neu starten" Sie sofort von diesem Punkt in der Zeit.Meine einfache vent-listener sieht so aus:
Ich hoffe, dies hilft jemand! Es ist ein wenig "hacky", aber es macht den job gut.
Freundlichen GRÜßEN,
Simon
In Ihrem
video.swf
haben Sie etwas zu schreiben wie diese:Den eventlistener Listener für das Event.ENTLADEN und ruft dann die Funktion auf, die zieht den " SoundMixer.stopAll ()' - Funktion ist ein annehmbarer workaround. Das funktioniert nicht, wenn Sie laden Sie Ihre swf-Datei aus einer anderen Domäne als die, die Ihr container-swf-Datei auf. Ich bin mir ziemlich sicher, es wird eine sandbox-Verletzung.
Ich habe keine Lösung dafür - und die beste Lösung ist sowieso die eine oben erwähnte, erwähnt scriptocalypse.
Aber ich bin in einer situation, wo ich bin, auf unterschiedlichen domains UND ich haben keine Kontrolle über SWF - Dateien, so kann ich nicht 'zerstören' - Funktionen in Ihnen.
Ich werde verrückt.