Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 08-07-2011, 08:31   #1 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
Question Schon geladene XML wiederverwenden!?

Hey Leute,

hätte da mal wieder eine Frage...

Folgendes Problem:
Ich habe eine swf welches verschiedene swf's lädt.
Die SWF's die ich einlade beinhalten einen kleinen preloader und lesen eine XML Datei aus.

Klappt alles wunderbar!

Doch wenn ich die SWF wieder mit unloadAndStop(); von der stage entferne, und in einem späteren Zeitpunkt wieder hinzufügen möchte muss er alles nochmal laden...

- Was für Möglichkeiten gibt es da auf den Flash-Speicher zurückzugreifen?

- Kann es sein das ich mit unloadAndStop(); wirklich auch die schon eingelesenen XML Daten mit entferne?

- Könnte man vor dem laden der XML eine Abfrage erstellen die fragt ob diese XML Datei schon geladen wurde - und die Texte aus dem Speicher holen?

Vielen Dank im voraus!
Gruß
Danjy ist offline   Mit Zitat antworten
Alt 08-07-2011, 08:50   #2 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Ort: Oldenburg
Beiträge: 2.408
Du kannst doch in Deiner Main.swf (die, die die anderen lädt) einfach eine Variable anlegen,

ActionScript:
  1. var _xml:XML;

Wenn Deine (ich nenn sie mal) XmlLoader.swf die XML geladen hat, dann befüllst Du die obrige Variable mit deren INhalt. Was Du dann mit der SWF machst, ist total egal und stört Deine XML in keinster Weise.
__________________
Mein Blog
Freue mich über jeden Besucher. :)
Nico B. ist gerade online   Mit Zitat antworten
Alt 08-07-2011, 08:58   #3 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
d.h ich lade alle XML Dateien in meinen swf welches die anderen lädt?

... Das sind aber einige.. und die XML Dateien sind auch nicht gerade klein...

Meinst du das wirkt sich auf die Performance aus?
Oder soll ich die dann mit dem Preloader ganz am Anfang direkt mit ab Frühstücken?

*EDIT*

Ah, Sorry habs falsch verstanden!

Werde es so mal versuchen!
Danke!

Geändert von Danjy (08-07-2011 um 08:59 Uhr)
Danjy ist offline   Mit Zitat antworten
Alt 08-07-2011, 08:58   #4 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von Danjy Beitrag anzeigen
Doch wenn ich die SWF wieder mit unloadAndStop(); von der stage entferne, und in einem späteren Zeitpunkt wieder hinzufügen möchte muss er alles nochmal laden...
Wenn Du wirklich so aufwändige Sachen nachlädst und diese später wieder verwenden möchtest, solltest Du sie eben nicht wieder entladen, sondern einfach das zugehörige DisplayObject unsichtbar machen (bzw. von der Bühne entfernen) und später einfach wieder einblenden.

Zitat:
Zitat von Danjy Beitrag anzeigen
- Was für Möglichkeiten gibt es da auf den Flash-Speicher zurückzugreifen?
Da Du mit Flash-Speicher wahrscheinlich die Daten meinst, die Flash zur Laufzeit im Arbeistspeicher verwaltet, lautet die Antwort Variablen. Sollange Du eine Variable/Referenz hast, die auf bestimmte Daten zeigt, dürfen diese nicht gelöscht werden und sind darüber auch abrufen.

Zitat:
Zitat von Danjy Beitrag anzeigen
- Kann es sein das ich mit unloadAndStop(); wirklich auch die schon eingelesenen XML Daten mit entferne?
Wenn Du sie nur in der nachgeladenen SWF referenzierst, fliegen sie natürlich auch aus dem RAM, wenn diese entladen wird. Was auch gut so ist - alles andere würde dazuführen, das irgendwelche Daten die Du garnichtmehr ansprechen kannst Dir langsam den Arbeitsspeicher vollmüllen.

Zitat:
Zitat von Danjy Beitrag anzeigen
- Könnte man vor dem laden der XML eine Abfrage erstellen die fragt ob diese XML Datei schon geladen wurde - und die Texte aus dem Speicher holen?
Natürlich könnte man das machen. Dafür müsste man aber das XML irgendwo in der Haupt-SWF speichern und das dürfte dazu führen, dass sich verschiedene Unter-SWFs früher oder später in die Quere kommen.

Aber eigentlich machst Du Dir hier Gedanken um ein Problem, was garnicht so dramatisch ist. Es gibt je neben dem Flash zugeordneten Arbeitsspeicher auch noch den Browsercache. Und in diesem landen alle Daten, die über den Browser geladen werden. Beim einem erneuten Aufruf muss Dein XML also nicht mehr aus dem Netz geladen werden, sondern kommt direkt von der lokalen Festplatte (ohne das Du dafür irgendetwas tun müsstest).

P.S.: Über wieviel KB reden wir hier eigentlich? .xml-Dateien sind doch in der Regel nicht so groß
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (08-07-2011 um 09:01 Uhr)
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 08-07-2011, 09:04   #5 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
Zitat:
Aber eigentlich machst Du Dir hier Gedanken um ein Problem, was eigentlich garnicht so dramatisch ist. Es gibt je neben dem Flash zugeordneten Arbeitsspeicher auch noch den Browsercache. Und in diesem landen alle Daten die über den Browser geladen werden. Beim einem erneuten Aufruf muss Dein XML also nicht mehr aus dem Netz geladen werden, sondern kommt direkt von der lokalen Festplatte (ohne das Du dafür irgendetwas tun müsstest).
Ja, schon. Allerdings muss man auch hier eine gewisse Zeit auf die Inhalte warten.

Werde es aber jetzt erst mal so versuchen das ich die Inhalte in der main.swf zwischenspeichere / in ein Array schreibe.
Danjy ist offline   Mit Zitat antworten
Alt 08-07-2011, 09:27   #6 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
Kurze Zwischenfrage, wie greife ich den von der "xml.swf" auf die "main.swf - Variablen" zu?

xml.swf
Zitat:
parent.land = myDaten.land;
main.swf
Zitat:
var land:String;
?
:P
Danjy ist offline   Mit Zitat antworten
Alt 08-07-2011, 10:05   #7 (permalink)
Flash-Designer
 
Benutzerbild von Martin Kraft
 
Registriert seit: May 2006
Ort: Wiesbaden
Beiträge: 6.162
Zitat:
Zitat von Danjy Beitrag anzeigen
Kurze Zwischenfrage, wie greife ich den von der "xml.swf" auf die "main.swf - Variablen" zu?
Wahrscheinlich eher so (Auf root, parent und stage kann man aber erst zugreifen, wennd die SWF auch in der Anzeigeliste hängt - also bei Event.ADDED_TO_STAGE):
PHP-Code:
Object(root).deineVariable deinWert
Das ist aber, wie gesagt, fehleranfällig und nicht sonderlich elegant, weil Du komplett die Kontrolle darüber verlierst, wer da wo was speichert. Ich würde Dir deshalb dringend raten eine der folgenden beiden Lösungen zu verwenden:
  • Die Daten einfach (wie bisher) aus dem Cache zu laden.
    Wenn die Daten einmal komplett geladen wurden, sollte das nicht länger als ein paar Sekundenbruchteile dauern. Wenn's länger dauert, liegt das wahrscheinlich nicht am Ladevorgang sondern an der Verarbeitung in Flash.

  • Die geladene SWF nicht zu entladen sondern nur auszublenden.
    So kannst Du nämlich sofort wieder zum letzten aktiven Zustand springen und hast keinerlei Verzögerung.
Nochmal:
Zitat:
Zitat von Martin Kraft Beitrag anzeigen
Über wieviel KB reden wir hier eigentlich? .xml-Dateien sind doch in der Regel nicht so groß
__________________
Viele Grüße // Martin

Martin Kraft // Interaktionsdesign

Hilfreiche Websites:
// Hilfe zur Adobe Flash Plattform
// ActionScript 2 Referenz
// ActionScript 3 Referenz
// ActionScript 3 Arbeitshandbuch
// weitere Flash Ressourcen

Bitte keine Flashfragen per PM oder Profilnachricht! Dafür ist das Forum da!

Geändert von Martin Kraft (08-07-2011 um 10:07 Uhr)
Martin Kraft ist gerade online   Mit Zitat antworten
Alt 08-07-2011, 11:04   #8 (permalink)
Neuer User
 
Benutzerbild von Danjy
 
Registriert seit: Apr 2010
Beiträge: 122
Naja ich baue mir die XML mit php zusammen.. und hole über 500 Daten aus der Datenbank...

Deswegen...

Wie wäre es denn mit einer ich sag mal SpeicherKlasse zu arbeiten.. in der Klasse würde ich die Variablen befüllen und abfragen ob sie schon gegeben sind vor dem neu laden?!
Danjy ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
laden, speicher, speichernutzung, 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
[Flash CS3] Loader wiederverwenden Firemice Flash Einsteiger 3 08-05-2010 06:25
Klasse wiederverwenden mariohofer ActionScript 3 7 04-04-2009 13:45
Steuerung wiederverwenden theorixx ActionScript 1 9 04-01-2004 12:30
Bild wiederverwenden Bauer05 ActionScript 1 1 16-06-2003 18:11
Schaltfläche wiederverwenden?? koenix Flash MX 4 16-09-2002 15:28


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

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


Copyright ©1999 – 2012 Marc Thiele