Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 22-12-2009, 17:54   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Ort: Frankfurt am Main
Beiträge: 5
Question SWF-Loader überschwemmt Speicher

Hallo.

Habe zwar einige Themen zu externen SWF's gefunden, aber aus irgend einem Grund Funktioniert das alles nicht so.
Ich schaffe es ohne Probleme von einer SWF zu einer nächsten zu gelangen. Aber die, die vorher geladen war, bleibt es und verstopft so irgendwann den Speicher. Das kann man ganz deutlich daran erkennen, dass im Taskmanager die Speicherauslastung des Prozesses deutlich nach oben schießt.

Wie also schaffe ich es, eine bereits eingeladene SWF-datei wieder zu entfernen.

Hier der Code meiner 1. SWF
PHP-Code:
stop();

var 
swfToLoadString "2.swf";

var 
loaderLoader = new Loader();
loader.load(new URLRequest(swfToLoad));
this.addChild(loader); 
Hier der Code meiner 2. SWF
PHP-Code:
stop();

var 
swfToLoadString "1.swf";

var 
loaderLoader = new Loader();
loader.load(new URLRequest(swfToLoad));
this.addChild(loader); 
Es ist ein Banner, der nach seinem Ablaufen einen anderen Banner läd. So augenscheinlich klappt das auch. Aber wenn man dann mal einen Kaffee trinken geht und nach einer halben Stunde wieder kommt, ist der entweder der Player lahm ohne Ende oder der Browser abgestürzt.

Wie kann man das Problem beheben. Bin leider noch ein NOOB in AS3. Mit removeChild(loader); klappt es auf jeden Fall nicht!

Vielen Dank schon mal!
Gruß BEN
bengine ist offline   Mit Zitat antworten
Alt 22-12-2009, 18:37   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Schau bspw. mal hier und hier.
  Mit Zitat antworten
Alt 22-12-2009, 19:25   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Ort: Frankfurt am Main
Beiträge: 5
Danke für die schnelle Antwort. Hört sich nach einem Problem an, was nicht durch AS3 gelöst werden kann. Also back to AS2 in this case.

Oder kennt jemand einen anderen Weg das zu lösen. Irgendwie möchte ich mich nicht geschlagen geben.

Danke schon mal an Holger.
bengine ist offline   Mit Zitat antworten
Alt 22-12-2009, 21:05   #4 (permalink)
GROLBA
 
Benutzerbild von tobee
 
Registriert seit: Jun 2007
Ort: Karlsruhe
Beiträge: 242
Vielleicht hilft dir der Artikel weiter?
__________________
Werbeagentur Karlsruhe
tobee ist offline   Mit Zitat antworten
Alt 04-01-2010, 11:02   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Ort: Frankfurt am Main
Beiträge: 5
Question

Vielen Dank. Um das Problem zu verstehen hat es auf jeden Fall geholfen. Ich habe mir die Codevorschläge dort angesehen und ausprobiert.... Leider ist das Ebenfalls keine Lösung....

Hier mal mein SWF-Aufbau:
starter.swf Frame 1
PHP-Code:
stop();
trace("frame1");

var 
_swfLoader:Loader;
var 
_swfContent:MovieClip;
       
loadSWF("1.swf");

       
function 
loadSWF(path:String):void {
    var 
_req:URLRequest = new URLRequest();
    
_req.url path;
       
    
_swfLoader = new Loader();
    
setupListeners(_swfLoader.contentLoaderInfo);
         
    
_swfLoader.load(_req);
}
       
function 
setupListeners(dispatcher:IEventDispatcher):void {
    
dispatcher.addEventListener(Event.COMPLETEaddSWF);
    
dispatcher.addEventListener(ProgressEvent.PROGRESSpreloadSWF);
}
       
function 
preloadSWF(event:ProgressEvent):void {
    var 
_perc:int = (event.bytesLoaded event.bytesTotal) * 100;
    
// swfPreloader.percentTF.text = _perc + "%";
}
       
function 
addSWF(event:Event):void {
    
event.target.removeEventListener(Event.COMPLETEaddSWF);
    
event.target.removeEventListener(ProgressEvent.PROGRESSpreloadSWF);
         
    
_swfContent event.target.content;
    
_swfContent.addEventListener("close"unloadSWF);
       
    
addChild(_swfContent);
}
       
function 
unloadSWF(event:Event):void {
    
_swfLoader.unloadAndStop();
       
    
removeChild(_swfContent);
    
_swfContent null;
    
}

gotoAndPlay(2); 
Starter.swf Frame 50
PHP-Code:
stop();
trace("frame50");
loadSWF("2.swf");

gotoAndPlay(51); 
Starter.swf Frame 100
PHP-Code:
stop();
gotoAndPlay(1); 
"1.swf" & "2.swf" sind jeweils 50 Frames lang. Deshalb diese komische konstruktion. Laut dem Programmierer des Codes im Frame 1, sollte jede geladene SWF nun wieder entladen werden. Aber wenn man sich im Taskmanager dann den SWFPlayerProzess ansieht, dann wächst der auch wieder unaufhörlich... Bei großen SWF-Datein ist wieder nach einer halben Stunde (je nach Speicherkapazität des Rechners) schluss mit flüssig.

Bin ich zu dumm um das zu verstehen Ich habe mal die .FLA Dateien angehängt, vielleicht kann ja jemand den Fehler finden. Wäre sehr nett...
Angehängte Dateien
Dateityp: fla starter.fla (80,0 KB, 2x aufgerufen)
Dateityp: fla 1.fla (208,0 KB, 2x aufgerufen)
Dateityp: fla 2.fla (192,0 KB, 2x aufgerufen)
bengine ist offline   Mit Zitat antworten
Alt 04-01-2010, 13:47   #6 (permalink)
Certified dump
 
Registriert seit: Aug 2001
Beiträge: 969
Exclamation

Hm, mir scheint du weisst nicht im geringsten was Du da zusammenkopierst bzw. tust

Warum ist diese Zeile mit drin, wird doch niemals ausgeführt ???
_swfContent.addEventListener("close", unloadSWF);


Ändere mal die Funktion ab, damit Du sie manuell aufrufen kannst:

function unloadSWF(event:Event=null):void
{
trace("unloadSWF");
_swfLoader.unloadAndStop();
removeChild(_swfContent);
_swfContent = null;

}

Dann vor jedem neuen Laden aufrufen,
so bleibt dann der Speicher frei

unloadSWF();
loadSWF("2.swf");

Jetzt aber ganz schnell ein Einsteigerbuch kaufen bei Amazon...
rudi66 ist offline   Mit Zitat antworten
Alt 05-01-2010, 12:55   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Ort: Frankfurt am Main
Beiträge: 5
@ rudi66: Mag ja sein, dass ich wenig Ahnung habe. Bin halt Anfänger. Aber ich arbeite daran

Habe deine Änderungen noch nicht getestet. Werde es Dich aber wissen lassen, ob es funktioniert hat.
Kannst du mir ein gutes AS3-Buch empfehlen? Ich habe das von GallileoBooks im Auge.
bengine ist offline   Mit Zitat antworten
Alt 05-01-2010, 13:25   #8 (permalink)
Certified dump
 
Registriert seit: Aug 2001
Beiträge: 969
Ja, Gallileo hat ganz gute Bücher zu AS

Solange dann das englische Tutorial durcharbeiten,
Thema Loading and Controlling Clips:
Flash CS3 External Clips
rudi66 ist offline   Mit Zitat antworten
Alt 13-01-2010, 09:12   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2009
Ort: Frankfurt am Main
Beiträge: 5
Wink

Super

Jetzt klappt es. Vielen Dank für die Geduld mit einem so einem Noob wie mir
Habe das Buch und werde mich besser. Bis bald. Gruß BEN
bengine ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
as3, extern, loader, problem, swf

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Speicher mit *.sol ? Xam05 Flash MX 2004 7 10-10-2005 21:03
speicher leon19 Flash MX 0 14-04-2004 13:47
Also ich bin von Tutorials nicht gerade überschwemmt Julian Graw Flash MX 6 18-03-2002 19:20
zwei loader -> ein loader ? net Flash 4 und Flash 5 0 29-09-2001 03:45
zwei loader -> ein loader ? net Flash 4 und Flash 5 0 29-09-2001 03:40


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:46 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele