Nicht hauen - Preloaden eines Ordners lokal

chmee

verstaubtes inventar
Premium-User
Mahlzeit Allerseits, habe nun ein Projekt vor mir, dass sich mal wieder :-) lohnt. Aber das letzte Mal habe ich vor etwa 7 Jahren an Flash5 gesessen.

Beim Start der FLA/SWF sollen die benötigten Grafik und Audiodateien
nachgeladen werden, damit ich nicht immer die FLA umschreiben muss, sondern nur
die Mediadateien ändere.

?
1. Wie kann ich in AS anweisen, einfach den Inhalt eines Ordners komplett einzulesen ?
2. Für den Preloader benötige ich die kB-Größe des Ordners, wie kann ich das bewerkstelligen ?

Ich erwarte keine Kompletterklärung, ich denke, dass ich mit Stichworten und Kurzanweisunggen und Tipps schon weiter komme. Links zu Fremderklärungen sind genau so gerne gesehen :)

mfg chmee
 
Hi,

Wie kann ich in AS anweisen, einfach den Inhalt eines Ordners komplett einzulesen ?
Gar nicht, da Flash keine Verzeichnisse (egal ob lokal oder auf dem Server) auslesen kann.

Für den Preloader benötige ich die kB-Größe des Ordners, wie kann ich das bewerkstelligen?
Indem Du auf dem Server ein Script (z.B. PHP) startest, welches diesen Ordner durchgeht, und die Größe aller enthaltenen Dateien addiert. Dieses Script könnte zudem eine Dateiliste als XML-Baum zurückgeben, so dass Dein Flashfilm weiß, welche Dateien zu laden sind.

Ich gehe davon aus, dass Du in PHP, Perl oder was auch immer bei Dir läuft fit bist, daher gebe ich hier nur mal die mögliche Ausgabe des Scripts an:
Code:
<directory size="1354327">
  <file type="swf" name="inhalt1.swf" />
  <file type="swf" name="inhalt2.swf" />
  <file type="mp3" name="sound1.mp3" />
</directory>

In Flash kannst Du das Script nun so aufrufen und die Rückgabe verarbeiten:
Code:
var xm = new XML();

xm.ignoreWhite = true;

xm.onLoad = function() {
  parse(this.firstChild);
}

function parse(obj) {
  var maxsize = parseInt(obj.attributes.size, 10); // Größe des Ordners
  obj = obj.childNodes;
  for (var i=0; i<obj.length; i++) {
    var file = obj[i].attributes.name; // Dateiname
    switch(obj[i].attributes.type) {
      case "swf": ladeSWF(file); break;
      case "mp3" ladeMP3(file); break;
    }
  }
}

xm.load("script.php?dir=files");

Gruß
.
 
Tobias, Danke und nett gemeint, ABER :

Das Ding wird nicht online laufen, sondern wird eine Applikation auf Standalone-Rechnern.

Ich habe die ganze Zeit überlegt ob ich es in VB mache, aber bei Medienapplikationen
ist es nur sinnvoll, auf Flash auszuweichen, da dort "alles" unterstützt wird und ich mich
nicht rumärgern muss mit Animations- und Sound-Funktionen.

mfg chmee

**EDIT**
Grundsätzliche Frage : Werden alle Medidaten in Flash als Movieclip gehandelt ?
Oder sollten sie als Symbol in der Bibliothek abgelegt werden ?
 
Hi,

wenn es sich um eine stand-alone-Anwendung auf einen lokalen Systen handelt, könntest Du die Anwendung mit verschiedenen Middleware-Lösungen kompilieren (damit hast Du dann u.a. Lese- und Schreibrechte auf den lokalen System). Ich verwende z.B. mdm ZINC.

Eine andere Alternative wäre eine lokale Text- oder XML-Datei, die die benötigten Daten enthält und von Flash eingelesen werden kann.

Worauf Deine zweite Frage abzielt, ist mir nicht ganz klar: Alles, was sich in der Bibliothek befindet, ist (von Shared-Libraries mal abgesehen) Teil der aktuellen SWF. Externe Mediadaten werden (genau wie Objekte in der Bibliothek) je nach Dateityp unterschiedlich behandelt (Grafiken z.B. prinzipiell als MovieClips, wenn sie per loadMovie eingeladen werden, mp3-Dateien als Soundobjekte).

Gruß
.
 
Jau, Danke für die Infos - mdm ZINC kannte ich zB noch nicht. Diese weite Welt der Middleware, uiui..

Die Fragen zielten schon darauf ab, zu erfahren, wo die LoadMovie-Sachen landen.
Nochmals Danke und auf ein Neues.

Hier Links für die Leute, die andere Infos erhofft haben:
http://kirupa.com/developer/mx/photogallery.htm
http://www.lukamaras.com/tutorials/actionscript/load-jpg/loading-external-jpg-image.html
http://www.tutorials.de/forum/flash...ne-inhalte-und-preloader-flash-mx-mx2004.html

mfg chmee
 
Die Fragen zielten schon darauf ab, zu erfahren, wo die LoadMovie-Sachen landen.
Jedenfalls nicht in der Bibliothek, bestenfalls im Browsercache. ;)

Grafiken und Filme, die per loadMovie geladen wurden, lassen sich danach nicht noch einmal per attachMovie instanzieren, sondern allenfalls ohne Zeitverlust neu laden, wenn sie (wie erwähnt) im Cache zur Verfügung stehen.

Von statischen Bilddateien kannst Du ab Flash 8 mit der BitmapData-Klasse einen "SnapShot" anfertigen, den Du an andere MovieClips übergeben kannst (siehe BitmapData.attachBitmap-Methode).

Gruß
.
 
Nun, hat sich geklärt, die Agentur braucht das Austauschen nicht *GRR*
Also alles statisch rein und Feddich is' die Sosse !

Danke und mfg chmee
 
Zurück