flexible xml in Flash

Andreas Waldheim

Grünschnabel
Ich habe eine swfDatei auf meiner DreamweaverSeite installiert.
Sie ist leer, abgesehen von zwei Steuerelementen (vorw./rückw.)
Diese möchte ich mit Bildern über eine xmlDatei füllen.

Allerdings möchte ich ihr unterschiedliche xmlDateien zuweisen können.
Konkret einem Namen jeweils ein paar Bilder.
Ich habe eine Ur-xml namens gallery, die verschiedene Events auflistet. In diesen ist dann ein Name, und ein Verweis auf eine für den Flashplayer bestimmte xml, die diesen mit dazugehörigen jpgs füllen soll.

Etwa so -

<?xml version="1.0" encoding="UTF-8"?>
<gallery>

<event>
<name>Gustav</name>
<film>flash/bilddaten1.xml</film>
</event>

<event>
<name>Knut</name>
<film>flash/bilddaten2.xml</film>
</event>

</gallery>

die xml Gustav (bilddaten1) für die swf sähe etwa so aus -

<?xml version"1.0"?>
<Bilder>
<Bild name=bilder/BILD1.JPG></Bild>
<Bild name=bilder/BILD2.JPG></Bild>
</Bilder>

die für Knut -

<?xml version"1.0"?>
<Bilder>
<Bild name=bilder/BILD3.JPG></Bild>
<Bild name=bilder/BILD4.JPG></Bild>
</Bilder>

Ich will dann in Dreamweaver in einer SpryWidgetTabelle die NameZeile (<name>Gustav</name>) einem Button zuweisen.
Dieser weist dann der swf die filmZeile ( <film>flash/bilddaten1.xml</film>) zu,
die dann die swf entsprechen füllen soll.

Wie bringe ich jetzt die swf dazu, sich verschiedene xmlDateien zuweisen zu lassen?
Das vorhandene actionscript verweist auf eine statische xml, die natürlich leiderleider immer den gleichen Inhalt transportiert.
Das Adressieren der Bereiche <name><name/>, resp <film><film/> hängt glaubich mit den childNodes zusammen. Ich kenne ich mich aber nicht genug mit actionscript aus.

// XML-Objekt erzeugen (Bezeichner: mein_xml)
mein_xml = new XML ();
// Störende Leerzeichen ignorieren
mein_xml.ignoreWhite = true;
// XML-Datei einlesen
mein_xml.load("bilddaten.xml");
// Lesevorgang
mein_xml.onLoad = function (status)
{
if (status && this.loaded)
{
anzahl = 0;
anzahl = mein_xml.firstChild.childNodes.length;
geladen = true;
aktBild = 0;
ladeBild (aktBild);
}
};

// Funktion, welche die Daten der XML-Datei verarbeitet
function ladeBild (paktBild)
{
status_mc._visible = 1;
bild = mein_xml.firstChild.childNodes[paktBild].attributes.pic;
bildname = mein_xml.firstChild.childNodes[paktBild].attributes.name;
loadMovie (bild, "bild_mc");
titel_txt.text = bildname;
}

// Weiter Schalter
weiter_btn.onRelease = function ()
{
if (geladen && aktBild < anzahl - 1)
{
aktBild++;
ladeBild (aktBild);
}
};

// Zurück Schalter
zuruck_btn.onRelease = function ()
{
if (geladen && aktBild > 0)
{
aktBild--;
ladeBild (aktBild);
}
};

Die Ur-swf stammt aus dem Buch Flash8 Powerworkshops und ist freeware.
Falls das mit dem Spry unverständlich sein sollte, hier eine URL zu einem Workshop, wo
so ein Konstrukt erklärt wird, allerdings für den Transport einzelner jpgs in einen placeholder.

http://www.adobe.com/de/designcenter/video_workshop/?id=vid0166

schönen Gruß
Andreas
 
Hi und willkommen im Forum,

für die Übergabe von Daten an einen eingebetteten Flashfilm gibt es prinzipiell mehrere Möglichkeiten: Eine davon ist die Übergabe via FlashVars (wenn pro Seitenaufruf nur eine XML-Datei verwendet wird), eine andere wäre die Übergabe via JavaScript (z.B. mit der ExternalInterface-Klasse, wenn zwischen verschiedenen Dateien umgeschaltet werden kann).

Wie diese Methoden konkret mit AS bzw. JavaScript implementiert werden, könnte ich Dir sagen - Deine Frage scheint aber eher auf Spezielfunktionen von WYSIWYG-html-Editoren (Dreamweaver) abzuzielen; ein Bereich, in dem ich mich nicht auskenne. Ich persönlich würde die gallery.xml in Flash laden, parsen und die Schaltflächen zum Laden der anderen Dateien in Flash anlegen.

Möglicherweise wäre es sinnvoller, wenn ich das Thema ins Unterforum für html-Editoren verschiebe (sag in dem Fall bitte bescheid).

Gruß
.
 
Hallo,

Vielen Dank für die schnelle Antwort.
Ich wäre sehr daran interessiert, zu erfahren, wie man die genannten Methoden (JavaScript ...) konkret implementiert.
Wenn man mit Dreamveaver arbeitet, kommt man garnicht umhin, sich mit dem Codefenster vertraut zu machen. Ebenso, wie bei Flash.
Vielleicht ist das Verschieben meines Beitrags keine schlechte Idee, allerdings ist, zumindest nach meiner Einschätzung, das Problem einerseits das Lokalisieren und Ansteuern bestimmter Elemente im xmlBaum, und hauptsächlich der Austausch der xmlAdresse im Flash.
Es handelt sich darum, Namen im Browser anzuklicken, für die der Flashplayer dann automatisch die Fotos lädt und zur Navigation bereitstellt. Von daher kann ich mir einen
Ladeknopf nicht so recht vorstellen.

Schönen Gruß
 
Hi,

im Anhang findest Du ein Beispiel, welches veranschaulicht, wie Inhalte per JavaScript an einen Flashfilm übergeben werden.

In Deinem Fall wird bei einem Aufruf der JavaScript-Methode "setXML" die ActionScript-Methode "reloadXML" aufgerufen, in der Du mit der Zeile
Code:
mein_xml.load(src);
die übergebene XML-Datei einladen kannst.

Gruß
.
 

Anhänge

Das klappt prima - mit Text.
Wenn ich aber eine xmlDatei als Adresse für JPGs nutzen will, wird auch nur der entsprechende Text angezeigt.
Ich möchte gerne, ausgehend von einem Namen im Browser, der z.B. einen Hyperlink, oder ein JavaScript Element, oder was es da so gibt, repräsentiert, den Player beladen, mit den entsprechenden xmlDateien.
Wenn ich Fritz drücke, dann soll der Player die FritzxmlDatei laden, die die Fritz Bilder adressiert, die ich dann mit den vorwärts/rückwärtsknöpfen des Players aufrufe.
Dito, wenn ich Franz drücke.
Ich hänge den Player einmal an. Bis jetzt lädt er bilddaten.xml und damit hat sichs.
 

Anhänge

Zurück