?
Hallo...,
Per ActionScript 3 möchte ich in einem Sprite eine Grafik und 2 Textfelder anzeigen.
Dabei soll alles dynamisch zur Laufzeit erstellt werden.
Dies lölse ich mit folgendem Script... (Erste Gehversuche mit AS 3 ==>Funktioniert ja sogar;)
import flash.display.*;
import flash.net.URLRequest;
import flash.events.Event;
var MeinContainer:Sprite = new Sprite();
MeinContainer.x = 30;
MeinContainer.y = 30;
addChild(MeinContainer);
var BildLader:Loader = new Loader();
var BildPfad:String = "0001.jpg";
var BildPfadReq:URLRequest = new URLRequest(BildPfad);
BildLader.load(BildPfadReq);
BildLader.contentLoaderInfo.addEventListener(Event.COMPLETE, BildGeladen);
//Text1Anzeigen
var MeinTextFeld1:TextField = new TextField();
MeinTextFeld1.text = "Hallo, ich bin Text1";
MeinTextFeld1.x = 60;
MeinTextFeld1.y = 60;
MeinTextFeld1.selectable = false;
MeinContainer.addChild(MeinTextFeld1);
//Text2Anzeigen
var MeinTextFeld2:TextField = new TextField();
MeinTextFeld2.text = "Hallo, ich bin Text2";
MeinTextFeld2.x = 60;
MeinTextFeld2.y = 90;
MeinTextFeld2.selectable = false;
MeinContainer.addChild(MeinTextFeld2);
function BildGeladen(event:Event):void
{
MeinContainer.addChild(BildLader.content);
}
Die Daten hierzu werden aus einem XML-Feile gelesen, dass mittels PHP Daten aus einer SQL-Datenbank abruft. (Das Handbuch ist ja zum Glück auch noch da...)
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("mainflash.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
myXML = new XML(e.target.data);
myXML.ignoreWhitespace = true;
myXML.ignoreComments = true;
myXML.ignoreProcessingInstructions = true;
for each (var item in myXML.produkt)
{
//trace(item.@ID.toString);
//trace(item.@Name.toString);
//trace(item.@Preis.toString);
//trace("-----");
status_txt.text = myXML.produkt.@Preis;
} //Ende for each
} //Ende function processXML
Nun mein aktuelles Problem.
ich möchte den 1. Code in die for each-Schleife des 2. Codes einfügen, um für jeden Datensatz ein eigenes Sprite mit Bild und Text anzuzeigen.
Dabei ergeben code1 und code2 folgendes... (Nur irgendwie nicht das erhoffte Ergebnis)
import flash.display.*;
import flash.net.URLRequest;
import flash.events.Event;
var myXML:XML;
var myLoader:URLLoader = new URLLoader();
myLoader.load(new URLRequest("mainflash.xml"));
myLoader.addEventListener(Event.COMPLETE, processXML);
function processXML(e:Event):void
{
myXML = new XML(e.target.data);
myXML.ignoreWhitespace = true;
myXML.ignoreComments = true;
myXML.ignoreProcessingInstructions = true;
for each (var item in myXML.produkt)
{
var MeinContainer:Sprite = new Sprite();
var Zaehler:Number = new Number();
Zaehler = 1;
MeinContainer.name = "Container" + Zaehler;
var AktuellerContainerName:String = MeinContainer.name;
root[AktuellerContainerName].x = 30;
root[AktuellerContainerName].y = 30;
addChild(root[AktuellerContainerName]);
var BildLader:Loader = new Loader();
var BildPfad:String = "0001.jpg";
var BildPfadReq:URLRequest = new URLRequest(BildPfad);
BildLader.load(BildPfadReq);
BildLader.contentLoaderInfo.addEventListener(Event.COMPLETE, BildGeladen);
//Text1Anzeigen
var MeinTextFeld1:TextField = new TextField();
MeinTextFeld1.text = "Hallo, ich bin Text1";
MeinTextFeld1.x = 60;
MeinTextFeld1.y = 60;
MeinTextFeld1.selectable = false;
root[AktuellerContainerName].addChild(MeinTextFeld1);
//Text2Anzeigen
var MeinTextFeld2:TextField = new TextField();
MeinTextFeld2.text = "Hallo, ich bin Text2";
MeinTextFeld2.x = 60;
MeinTextFeld2.y = 90;
MeinTextFeld2.selectable = false;
root[AktuellerContainerName].addChild(MeinTextFeld2);
status_txt.text = myXML.produkt.@Preis;
status_txt.text = AktuellerContainerName;
Zaehler++;
} //Ende for each
} //Ende function processXML
function BildGeladen(event:Event):void
{
AktuellerContainerName.addChild(BildLader.content);
}
Nur leider wirft der Compiler nur Fehlermeldungen raus...
1120: Zugriff auf eine nicht definierte Eigenschaft AktuellerContainerName.
1120: Zugriff auf eine nicht definierte Eigenschaft BildLader.
Bin schon etwas müde und krieg´s selbst nicht zum Laufen, bin mit AS noch nicht so richtig warm geworden...
Ich hoffe, jemand der einen Lösungsvorschlag besitzt stolpert über meinen Beitrag und kann mir ein Stück weiterhelfen...
CU==>Eisbeer<==