Wie kann ich die entladen, die extern geladene SWF-Datei aus einer SWFLoader-Komponente in Adobe Flex?
Ich habe eine Anwendung, lädt die externe SWF-Dateien und spielt Sie innerhalb einer Adobe-Flex - /Air-Anwendung über die SWFLoader-Flex-Komponente. Ich habe versucht, einen Weg zu finden, um zu entladen, die Sie von einer Schaltfläche click-Ereignis. Ich habe Google würde weit und breit, und niemand scheint in der Lage gewesen, es zu tun, ohne einen hack. Die Kombination von code sehe ich die Menschen ist:
swfLoader.source = ""; //Removes the external link to the SWF.
swfLoader.load(null); //Forces the loader to try to load nothing.
//Note: At this point sound from the SWF is still playing, and
//seems to still be playing in memory.
flash.media.SoundMixer.stopAll();
//Stops the sound. This works on my development machine, but not
//on the client's.
Wenn die SWF-Dateien geschlossen sind (versteckt) auf diese Weise, schließlich stürzt das Programm ab.
Irgendwelche Ideen? Ich habe festgestellt Tonnen von posts in verschiedenen Foren mit Leuten mit dem gleichen problem. Ich nehme an, bekomme ich eine falsche/unvollständige Antwort hier, und als mein post wird versinken in dem nichts, wie üblich, aber so oder so, danke im Voraus!
Bearbeiten 1: ich kann nicht Bearbeiten Sie die tatsächliche SWF-Filme, Sie sind von dem Kunden erstellt wurden. Wenn ich nicht in der Nähe einer SWF-eröffnet durch Flex, ist das kein problem mit der Flex-Architektur? Ist meine einzige option senden die SWF-Dateien an den web-browser?
InformationsquelleAutor Shawn | 2008-09-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja, es ist, und es betrifft auch Flash im Allgemeinen. Bis können Sie die Vorteile der Loader.unloadAndStop() Methode in FP10 (AIR 1.5), können Sie nicht garantieren, die extern geladenen content nicht weiter zu verbrauchen Arbeitsspeicher und cpu-Ressourcen, selbst wenn Sie die
Loader.unload()
Methode. (Um ehrlich zu sein, bin ich mir nicht 100% sicher, dass auch garantiert Freigabe von Ressourcen, aber vielleicht bin ich ein pessimist.)Ist die nächste beste Sache ist für Sie, darauf zu bestehen, dass die Schöpfer der Inhalte, die Sie laden, die sich auf eine Reihe von Leitlinien, einschließlich der Freilegung so etwas wie eine
dispose()
Methode, die Ihre app anrufen können, um Fragen, die es zu release so viele Ressourcen wie möglich, bevor Sieunload()
. Wenn dies nicht möglich ist, dann Ihre Anwendung fast definitiv aufblasen im Speicher und cpu-Auslastung jedes mal, wenn Sie das laden einer externen swf-Datei. Sorry.Wenn es macht Sie fühlen sich besser, sind Sie nicht allein. 😉
Seltsam. Können Sie das noch näher erläutern? Vielleicht sogar eine Frage stellen, wenn man nicht bereits vorhanden!
InformationsquelleAutor aaaidan
Ist es ein problem, dass eine schlecht erstellte SWF kann, sinken die Anwendung, und viele der Probleme, die damit behoben werden, die in Flash Player 10, wie andere erwähnt haben. Jedoch, unabhängig von der Plattform, werden Sie immer das Risiko ein, dass Probleme, wenn Sie Last third-party-code, es gibt immer die Möglichkeit, dass Sie bugs enthält, Speicherlecks oder geradezu bösartigen code. Es sei denn, Sie können laden Sie Inhalte in einer sandbox (und Sie können nicht in Flash, zumindest noch nicht), laden die schlechten Dinge, die untergehen wird, Ihre app, es ist einfach so.
Tut mir Leid zu sagen, dass es sei denn, Sie können garantieren, die Qualität der geladenen Inhalte, die Sie nicht garantieren können, die Qualität Ihrer eigenen Anwendung. Flash-Entwickler sind berüchtigt für das schreiben von Sachen, die Auslaufen, oder kann nicht entladen werden, da der Flash-macht es leicht, das falsche zu tun, vor allem für Dinge, die live auf der time-line. Laden die Flash-Inhalte, die Sie nicht haben Kontrolle über direkt ist sehr gefährlich.
InformationsquelleAutor Theo
Die beste Lösung ist
Auf diese Weise stoppen Sie den player entfernen Sie den Inhalt aus dem Gedächtnis und vermeiden, den Ton zu bleiben, zu spielen..
Cheers
InformationsquelleAutor Yury Euceda
Das problem befindet sich in der geladenen swf-Datei, die es einfach nicht den Ton säubern, nach sich.
Versuchen Sie eine unload-Ereignis auf Videoclips wie diesen:
InformationsquelleAutor user19264
Ich würde in der Regel bleiben Weg von SWFLoader und verwenden Sie die Klassen im mx.Modul-Paket.
Flex hat ein Modul-system, das es ermöglicht, diese Art von Verhalten. Sie können check it out hier : http://livedocs.adobe.com/flex/3/html/help.html?content=modular_3.html . Im Allgemeinen dynamisch laden und entladen von swf-Komponenten ist schwierig, vor allem, wenn die Module ändern, eine Globale Status der Anwendung (Stile, etc..). Aber wenn Sie erstellen eine Schnittstelle für Module, und dann jede Klasse die lade - /Entlade-Umsetzung der Schnittstelle sowie die Erweiterung der flex-Modul-Klasse, Sie können laden und entladen Sie Sie sauber.
InformationsquelleAutor
Versuchen Sie Folgendes:
Erzwingt eine Garbage Collection routine. Wenn Ihre SWF-Datei wird noch beigefügt, dann hast du es verpasst eine Art von Verbindung, wie die audio.
Gibt es ein paar Möglichkeiten, um Kraft GC, die alle Art von saugen, weil Sie spike CPU, aber die gute Nachricht ist, dass ein offizieller Weg ist, kommen im Flash-Player 10:
link: http://www.gskinner.com/blog/archives/2008/07/unloadandstop_i.html
Bis dann, ich fürchte, du musst, um ihn zu zwingen mit hacks wie ich oben zeigte.
InformationsquelleAutor Brent
Haben Sie nicht gezeigt, die alle Ihren code so werde ich davon ausgehen, dass Sie nicht verwenden Sie die unload-Methode der Loader-Klasse. Auch swfLoader.load(null) scheint mir falsch zu sein, da die load-Methode erwartet wird ein URLRequest-Objekt. Wenn Sie möchten, Dinge zu bereinigen am Ende, das Objekt mit dem Wert null anstelle des Aufrufs ein null-Last. Die Tatsache, dass Ihr noch hören audio bedeutet, dass Ihre Daten nicht entladen werden, oder die audio-Datei befindet sich nicht innerhalb der Inhalte, die entladen wurde. Lets Spaziergang durch diesen.
Beispiel unten
Ich hoffe, das war hilfreich, und ich bin sorry, wenn es war überflüssig, aber ohne zu sehen, deinen code habe ich keine Möglichkeit zu wissen genau, wie Sie näherte sich diesem.
InformationsquelleAutor Brian Hodge