JaguarGorgone
Mitglied
Hallo liebe Gemeinde,
ich stehe vor einem Problem, welches mich seit Tagen nicht in Ruhe lässt. Nach vielem Suchen und Herumprobieren, hoffe ich nun bei Euch auf den entscheidenen Tip.
Zunächst zum Rahmen des Ganzen:
Ich sitze an einem Flashfilm. In einer Funktion wird eine Liste aus einer Datenbank über PHP bzw. XML in den Film importiert. Jeder Datensatz hat wird in einen eigens erzeugten Movieclip angezeigt. Um den Rahmen des Films nicht zu sprengen, liegen diese Clips hinter einer Maske und können über eine Scrollleiste bewegt werden.
Da jedes Element eine eigene Funktion (d.h. beim Anklicken des Movieclips wird eine Änderung im Film ausgeführt) im Film besitzt, konnte ich diese nicht einfach in ein Textfeld untereinander setzen.
Das Problem:
In einer for-Schleife werden nun die Datensätze der XML-Datei ausgelesen. Für jeden Datensatz wird ein MC erzeugt. Das klappt auch einwandfrei. Auf diesen Movieclip wird dann direkt ein Textfeld mit dem Inhalt/Daten des Satzes gesetzt. Dort liegt das Problem. Der Text wird nicht angezeigt. Der textliche Inhalt ist vorhanden (trace). Meine Vermutungen gehen in zwei Richtungen: Entweder ist der Pfad falsch oder die Tiefe des Textfeldes ist nicht korrekt.
Da der Pfad aber vorher schon zur Erzeugung des Movieclips erfolgreich genutzt wurde, würde ich das eher ausschliessen. Bliebe die Tiefe der Ebene. Dort habe ich verschiedene Werte eingesetzt:
Den Quelltext für die MC Erzeugung (die wichtigsten Auszüge):
Zum besseren Verständnis:
Die Instanz "shopback" liegt auf der Instanz "shoplocator_inhalt". Über der Ebene liegt eine Maske, um den Scrolleffekt für die erzeugten MCs zu erhalten. Wie bereits beschrieben, werden auch alle MCs angezeigt und auch die Scrollfunktion arbeitet korrekt.
Der entscheidende Befehl ist wohl:
Warum erscheinen diese dynamisch erzeugten Textfelder nicht auf der dynamisch erzeugten Ebene?
Für Tips und Lösungen bin ich sehr dankbar.
Schöne Grüsse
ich stehe vor einem Problem, welches mich seit Tagen nicht in Ruhe lässt. Nach vielem Suchen und Herumprobieren, hoffe ich nun bei Euch auf den entscheidenen Tip.
Zunächst zum Rahmen des Ganzen:
Ich sitze an einem Flashfilm. In einer Funktion wird eine Liste aus einer Datenbank über PHP bzw. XML in den Film importiert. Jeder Datensatz hat wird in einen eigens erzeugten Movieclip angezeigt. Um den Rahmen des Films nicht zu sprengen, liegen diese Clips hinter einer Maske und können über eine Scrollleiste bewegt werden.
Da jedes Element eine eigene Funktion (d.h. beim Anklicken des Movieclips wird eine Änderung im Film ausgeführt) im Film besitzt, konnte ich diese nicht einfach in ein Textfeld untereinander setzen.
Das Problem:
In einer for-Schleife werden nun die Datensätze der XML-Datei ausgelesen. Für jeden Datensatz wird ein MC erzeugt. Das klappt auch einwandfrei. Auf diesen Movieclip wird dann direkt ein Textfeld mit dem Inhalt/Daten des Satzes gesetzt. Dort liegt das Problem. Der Text wird nicht angezeigt. Der textliche Inhalt ist vorhanden (trace). Meine Vermutungen gehen in zwei Richtungen: Entweder ist der Pfad falsch oder die Tiefe des Textfeldes ist nicht korrekt.
Da der Pfad aber vorher schon zur Erzeugung des Movieclips erfolgreich genutzt wurde, würde ich das eher ausschliessen. Bliebe die Tiefe der Ebene. Dort habe ich verschiedene Werte eingesetzt:
- getNextHighestDepth() versuchte Pfade: von _root. bis _root.shoplocator_inhalt.shopback['shop_'+(i+1)]. und this.
- feste Werte (sowohl kleine Werte als auch grosse Werte
- swapDepths(12)
Den Quelltext für die MC Erzeugung (die wichtigsten Auszüge):
Code:
on (release) {
var shopXML:XML = new XML();
var sh:Array = new Array();
shopXML.ignoreWhite = true;
shopXML.onLoad = function(success) {
var currentNode:XMLNode = this.firstChild;
var i:Number = 0;
var c:Number = 0;
var u:Number = 4;
for (var childNode = currentNode; childNode != null; childNode=childNode.nextSibling, i++) {
sh[i] = new Array();
_root.shoplocator_inhalt.shopback.createEmptyMovieClip('shop_'+(i+1), _root.shoplocator_inhalt.shopback.getNextHighestDepth());
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].beginFill(0xFFFFFF, 100);
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].moveTo(u, c);
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].lineTo(324, c);
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].lineTo(324, (c+60));
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].lineTo(u, (c+60));
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].lineTo(u, c);
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].endFill();
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].createTextField('shop', this.swapDepths(12), (u + 12), (c + 4), 300, 60);
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].shop.multiline = true;
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].shop.html = true;
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].shop.color = 0xDD1100;
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].shop.htmlText = childNode.childNodes[0].childNodes[0].nodeValue+'<br />'+childNode.childNodes[1].childNodes[0].nodeValue+'<br />'+childNode.childNodes[2].childNodes[0].nodeValue+' '+childNode.childNodes[3].childNodes[0].nodeValue;
// Abstand fürs nächste Element
c = c+64;
// Aktion erzeugen
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].onRelease = function() {
// hier kommt dann die Aktion
};
}
};
// XML laden
shopXML.load("shoplocator.xml");
}
Zum besseren Verständnis:
Die Instanz "shopback" liegt auf der Instanz "shoplocator_inhalt". Über der Ebene liegt eine Maske, um den Scrolleffekt für die erzeugten MCs zu erhalten. Wie bereits beschrieben, werden auch alle MCs angezeigt und auch die Scrollfunktion arbeitet korrekt.
Der entscheidende Befehl ist wohl:
Code:
_root.shoplocator_inhalt.shopback['shop_'+(i+1)].createTextField('shop', this.swapDepths(12), (u + 12), (c + 4), 300, 60);
Warum erscheinen diese dynamisch erzeugten Textfelder nicht auf der dynamisch erzeugten Ebene?
Für Tips und Lösungen bin ich sehr dankbar.
Schöne Grüsse