| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Aug 2004
Beiträge: 20
| Inhalte dynamisch aus einer XML Datei auslesen in Flash MX
Tach zusammen.. wir haben folgendes Problem : Es sollen verschiedene Arbeitsplatzanweisungen aus einer XML-Datei dynamisch in Flash ausgelesen werden. Das klappt auch soweit.. wir hängen nun aber an einem Problem fest : Jede der Arbeitsplatzanweisung ist unterschiedlich formatiert, deswegen haben wir unter dem Tag <textarea> mehrere Textarten definiert. ( siehe XML-Code ). Im Flash-Code wurde ein Array mit den verschiedenen Textarten kreiert und in den switch-case Abfragen werden nun jeweils Textfelder dafür erstellt. Im Fall "Liste" sollen 2 Textfelder erstellt werden, die die beiden Einträge beinhalten. Leider werden diese aber nicht in Flash dargestellt. Weiss einer, woran das liegen könnte? Danke im Vorraus ################ XML-Datei ################ Code: <arbeitsplatzanweisungen> <!-- FIRST CHILD / ROOT-ELEMENT --> <anweisung id="AA 010"> <!-- FIRST CHILD FIRST CHILD --> <grafikformat>4</grafikformat> <!-- 1.Knoten des FIRST CHILD --> <bezeichnung>Arbeitsanweisung VW 351</bezeichnung> <!-- 2.Knoten des FIRST CHILD --> <bereich>Karosseriebau</bereich> <!-- 3.Knoten des FIRST CHILD --> <arbeitsfolge>Betriebsmittel</arbeitsfolge> <blaetter> <blatt id="1"> <stand>09.02.2004</stand> <textarea> <ueberschrift1>Rohbau Finishlinie</ueberschrift1> <liste> <eintrag>Lackierereibetriebsmittel einsetzen</eintrag> <eintrag>Betriebsmittel müssen sich in KTL-Stellung befinden</eintrag> </liste> <ueberschrift3>Türen vorn</ueberschrift3> <tabelle> <zeile> <spalte>4T vorn Abstandshalter (2x)</spalte> <spalte>11-64D-301 393</spalte> </zeile> </tabelle> <ueberschrift3>Türen hinten</ueberschrift3> <tabelle> <zeile> <spalte>4T hinten Abstandshalter (2x)</spalte> <spalte>11-64D-301 394</spalte> </zeile> </tabelle> <ueberschrift3>Deckel vorn</ueberschrift3> <tabelle> <zeile> <spalte>KTL-Deckelstütze vorn</spalte> <spalte>11-64D-301 389</spalte> </zeile> </tabelle> <ueberschrift3>Deckel hinten</ueberschrift3> <tabelle> <zeile> <spalte>S-grün-Keder</spalte> </zeile> </tabelle> </textarea> <imagearea> <image>photos_jpg/betriebsmittel_foto1.jpg</image> <image>photos_jpg/betriebsmittel_foto2.jpg</image> <image>photos_jpg/betriebsmittel_foto3.jpg</image> <image>photos_jpg/betriebsmittel_foto4.jpg</image> </imagearea> </blatt> </blaetter> </anweisung> </arbeitsplatzanweisungen> ############################# Flash-Code ############################# Code: var XMLObj = new XML();
trace(" ");
trace("###############################");
trace("###############################");
trace(" ");
trace("...XML Instanz erzeugt");
XMLObj.onLoad = geladen;
trace("...geladen");
XMLObj.ignoreWhite = true;
trace("...ignore WhiteSpace");
XMLObj.load("test1.xml");
trace("...test1.xml loaded");
trace(" ");
// ############################################
// ### F U N K T I O N ########################
// ############################################
trace("###############################");
trace("###############################");
trace("Starte Funktion...");
trace("###############################");
trace(" \t\t\t\t\t\t\t\t");
function geladen(erfolgreich) {
//Deklaration globaler Variablen
xpos=0;
ypos=20;
abstandZuOben=50;
if (erfolgreich) {
play;
var namen = new Array();
//trace("ueberschrit1 :"+XMLObj.firstChild.childNodes[0].childNodes[4].childNodes[0].childNodes[1].childNodes[0].nodeName);
//trace("liste anzahl :"+XMLObj.firstChild.childNodes[0].childNodes[4].childNodes[0].childNodes[1].childNodes[1].childNodes.length);
//trace("laenge :"+XMLObj.firstChild.childNodes[0].childNodes[4].childNodes[0].childNodes[1].childNodes.length);
for (j=0; j<XMLObj.firstChild.childNodes[0].childNodes[4].childNodes[0].childNodes[1].childNodes.length; j++)
{
namen[j] = XMLObj.firstChild.childNodes[0].childNodes[4].childNodes[0].childNodes[1].childNodes[j].nodeName;
trace("GibNamenAus :"+namen[j]);
}
for (k=0; k<namen.length; k++) {
switch (namen[k]) {
case "ueberschrift1" :
createTextField("ueberschrift1_tf", k, xpos, ypos, 100, 50);
ueberschrift1_tf.border = true;
ueberschrift1_tf.text = "ueberschrift1";
myformat_ue1 = new TextFormat();
ypos+=abstandZuOben;
break;
case "ueberschrift2" :
createTextField("ueberschrift2_tf", k, xpos, ypos, 100, 50);
ueberschrift2_tf.border = true;
ueberschrift2_tf.text = "ueberschrift2";
myformat_ue2 = new TextFormat();
ypos+=abstandZuOben;
break;
case "ueberschrift3" :
createTextField("ueberschrift3_tf", k, xpos, ypos, 100, 50);
ueberschrift3_tf.border = true;
ueberschrift3_tf.text = "ueberschrift3";
myformat_ue3 = new TextFormat();
ypos+=abstandZuOben;
break;
case "liste" :
for(l=0;l<XMLObj.firstChild.childNodes[0].childNodes[4].childNodes[0].childNodes[1].childNodes[1].childNodes.length;l++)
{
var eintrag = XMLObj.firstChild.childNodes[0].childNodes[4].childNodes[0].childNodes[1].childNodes[1].childNodes[l].firstChild.nodeValue;
var name="eintrag :"+l;
trace(name);
trace("..eintrag: "+eintrag);
name.border = true;
name.text=eintrag;
//TextField für jeden Listeneintrag generieren...
createTextField(name, 1, xpos, ypos, 100, 50);
}
ypos+=abstandZuOben;
break;
case "tabelle" :
createTextField("tabelle_tf", 5, xpos,ypos, 100, 50);
myformat_t = new TextFormat();
myformat_t.font = "Verdana";
myformat_t.size = 20;
myformat_t.color = 0xFF0000;
myformat_t.bold = true;
tabelle_tf.border = true;
tabelle_tf.text = "tabelle";
tabelle_tf.setTextFormat(myformat_t);
ypos+=abstandZuOben;
break;
}
}
} else
{
trace("Fehler");
}
} Geändert von thcyash (26-10-2004 um 09:17 Uhr) |
| | |
| | #2 (permalink) |
| Neuer User Registriert seit: Jan 2002
Beiträge: 1.244
|
1. Kein kleines "l" benutzen da es nicht von einer 1 zu unterscheiden ist.(im Script Editor) 2. "name" nicht als Variablennamen benutzen.Ist ein reserviertes Wort. Und dann sollte es so gehen: PHP-Code: |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Aug 2004
Beiträge: 20
|
mahlzeit zusammen.. haetten da noch eine Frage: Wir haben es jetzt hinbekommen, dass alle Informationen aus den Arbeitsplatzanweisungen in Flash ausgelesen werden können und auch die verschiedenen Textformatierungen funktionieren jetzt auch.. Nun kommen wir aber zum eigentlichen Problem : Wie bringen wir Flash jetzt bei, dass er die jeweiligen Arbeitsplatzanweisungen direkt anspricht und die Inhalte und Textformatierungen auch darstellt.. Wir haben bisher nur über For-Schleifen alle Inhalte aus der XML-Datei auslesen können, es soll aber am ende ja so sein, dass der Betrachter der Präsentation die Arbeitsplatzanweisung AA200 z.B. sich anschauen will und durch eine Funktion etc. auch direkt darauf zugegriffen und die informationen dargestellt werden. Ich hoffe ich habe mich verständlich ausgedrueckt. Für Hilfe wären wir sehr dankbar. Gruß |
| | |
| | #6 (permalink) |
| _//\\#//\\_ Registriert seit: Jan 2003
Beiträge: 7.060
|
naja, ich denke mal, ihr könnt entweder das xml-objekt für den zugriff nutzen, oder ihr "sortiert" alles in array-strukturen, die euren zugriff-bedürfnissen am besten entsprechen. die frage ist ja, über welche schlüssel du zu welcher info willst oder wie ihr die daten dann halt 'verarbeiten' wollt. |
| | |
| | #7 (permalink) |
| Neuer User Registriert seit: Aug 2004
Beiträge: 20
|
es soll am Ende halt so sein, dass über die "ID" im <anweisung>-Tag auf die Arbeitsplatzanweisung zugegriffen werden kann.. nur wissen wir halt nicht, wie man so etwas macht.. vielleicht in der Form ?: PHP-Code: Danke im vorraus... und es hat sich vorher noch ein kleines Problem eingschlichen: Die Testdatei vom ersten Posting haben wir erweitert. Es sollen nun auch die Tabellen mit deren Inhalt dargestellt werden.. Leider werden nicht alle Tabelleninhalte dargestellt.. und wir können partout den Fehler nicht identifizieren.. vielleicht kann uns ja jemand auf die Sprünge helfen.. XML Code : PHP-Code: PHP-Code: Geändert von thcyash (29-10-2004 um 12:22 Uhr) |
| | |
| | #8 (permalink) | |
| _//\\#//\\_ Registriert seit: Jan 2003
Beiträge: 7.060
|
mach eine prinzipskizze von der oberfläche, die dargestellt werden soll. anhand der skizze kann man sicher eure zielstellung ableiten, das ist voraussetzung für die gestaltung des codes. geht nich, gibts nich. btw: Zitat:
davon gibt es ja tatsächlich unmengen.... | |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Aug 2004
Beiträge: 20
| Skizze Auf der Skizze sieht man das Grunddesign, wie die Arbeitsplatzanweisung in Flash dargestellt werden soll.. Es ist nur ein Teil einer Präsentation und man muss sich das so vorstellen, dass man eine Liste hat, aus der man die verschiedenen Arbeitsplatzanweisungen aufrufen kann.. Beim Klick auf die AA, soll Flash nun die AA samt Inhalt darstellen.. oben im Header haben wir probehalber schon einige dynamische Textfelder erstellt, wo der Inhalt der Bezeichnung etc. reingeladen wird.. Wir haben dazu, wie oben erwähnt, ein Schleifenkonstrukt entwickelt, womit halt alle Informationen aus den jeweiligen AAs ausgelesen werden.. Ziel ist es nun, dass man auf bestimmte AAs zugreifen kann und auch der inhalt ausgelesen werden kann.. Thx im vorraus ^_^ |
| | |
| | #10 (permalink) |
| _//\\#//\\_ Registriert seit: Jan 2003
Beiträge: 7.060
|
ok, wenn ich eure xml anschaue, dann stellt sich mir folgende grundstruktur dar: Code: <arbeitsplatzanweisungen>
<anweisung id="AA 010">
<überschriften/>
<blaetter>
<blatt 1>
<textarea>
................
<textarea/>
<imagearea>
................
<imagearea/>
<blatt/>
<blatt 2>
<textarea>
................
<textarea/>
<imagearea>
................
<imagearea/>
<blatt/>
<blaetter/>
<anweisung />
<anweisung id="AA 020">
<überschriften/>
<blaetter>
<blatt 1>
<textarea>
................
<textarea/>
<imagearea>
................
<imagearea/>
<blatt/>
<blatt 2>
<textarea>
................
<textarea/>
<imagearea>
................
<imagearea/>
<blatt/>
<blaetter/>
<anweisung />
<arbeitsplatzanweisungen/> also jede anweisung hat immer einen strukturell unveränderten überschriftenblock, eine variable anzahl von blättern, die jeweils einen variabel langen textareablock sowie einen variabel langen image-block haben...? warum in der textarea die unterscheidung zwischen liste und zeile ? grz |
| | |
| | #11 (permalink) |
| Neuer User Registriert seit: Aug 2004
Beiträge: 20
|
@warrantmaster: die Überschriften gehören zur Textarea.. wir haben innerhalb der Textarea unterschiedliche Textformatierungsarten: überschrift 1 steht zum Beispiel für unterstrichen und fett.. überschrift 2 für nicht unterstrichen und fett überschrift 3 für unterstrichen.. nicht fett.. Die anderen Textformatarten sind dann noch "Liste", mit ihren Einträgen und "Tabelle" mit ihren Zeilen und Spalten, bei einigen wenigen Anweisungen auch "Thumbs". Es werden in der flash datei die Anzahl der Elemente in der Textarea gezählt und denn über case anweisungen die jeweiligen Textformatarten bestimmt. Jede Anweisung kann aus mehreren Blättern bestehen. Die Grundstruktur sähe also folgendermaßen aus: PHP-Code: Geändert von thcyash (29-10-2004 um 18:04 Uhr) |
| | |
| | #15 (permalink) |
| Neuer User Registriert seit: Aug 2004
Beiträge: 20
|
super Danke dir Warrantmaster, wir wollen hiermit auch klarstellen, dass es sich hierbei NICHT um ein kommerzielles Projekt handelt, sondern um ein Projekt fürs Studium ( die IT-Firma, für die wir das erstellen, profitiert natürlich dadurch) aber wir kriegen NULL Cent dafür! Nur um keine Missverständnisse aufkommen zu lassen ^_^. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |