Hallo Leute,
nachdem ich es mir Eurer Hilfe geschafft habe ,die Elemente einer externen XML- Datei in einem dynamischen Textfeld auszugeben, habe ich nun das nächste Problemchen. Ich möchte gerne die Elemente der XML-Datei in ein Array schreiben. Die Ausgabe im Newsticker zeigt aber ausschließlich die Elemente des Arrays an, welche ich in der Definition des Arrays reingeschrieben habe. Also von den Inhalten der externen Datei leider nichts zu sehen. Habe es mit tickerTextArr.push( "\n"+externalXML.TEXT[i]); versucht, aber leider vergeblich. Die XML-Datei wird problemlos geladen und die Elemente werden auch mit trace () ausgegeben. Der Ticker funktioniert ansonsten auch ohne Probleme.
Wer zeigt mir den Weg ? Wer lüftet das Geheimnis ?
Gruß
Philipp
Code:
import flash.net.URLRequest;
var externalXML = new XML();
var loader:URLLoader = new URLLoader();
var request:URLRequest = new URLRequest("texte.xml");
loader.load(request);
loader.addEventListener(Event.COMPLETE, onComplete);
function onComplete(event:Event):void {
var loader:URLLoader = event.target as URLLoader;
if (loader !== null) {
externalXML = new XML(loader.data);
trace(externalXML.toXMLString());
trace(externalXML.child("*").length())
for (var i:int=0;i<externalXML.child("*").length();i++){
tickerTextArr.push( "\n"+externalXML.TEXT[i]);
}
} else {
trace("loader is not a URLLoader!");
}
}
/////////////////////////////////DEC-TICKER//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///Einstellungen////
var tickerTextArr:Array = new Array("hallo");
var tickerSize:Number = 1920; // Breite der Anzeige in dem der Text zusehen ist.
var tickerPosX:Number = 100; // x position des Tickers.
var tickerPosY:Number = 500; // y position des Tickers.
var tickerSpeed:int = 15; // Geschwindigkeit des Tickers.
var textFarbe = 0x990000; // Text Farbe aendern.
var textGroeße:int = 40; // Text Groeße einstellen.
var textUnterstrichen:Boolean = false; // Text Unterstrichen (Wahr/Falsch) true/false
var starten:Boolean = true; // Startet o. Startet nicht den Textablauf bei Laden
// Dynamisch waehrend zur Laufzeit wird über Funktion gesteuert
// onOffTicker(true oder false);
// Weitere Texte koennen auch Dynamisch zugeführt werden! Beispiel: tickerTextArr.push("hallo ich bin das vierte Element im Bunde");
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///Nur mit bedacht veraendern!//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var ticker:Sprite = new Sprite;
addChild(ticker);
var timing:Timer = new Timer(tickerSpeed);
timing.addEventListener("timer", runTicker);
var maske:Sprite = new Sprite();
addChild(maske);
var textF1:TextField = new TextField();
var textF2:TextField = new TextField();
//Erstellt und Positioniert die Textfelder
function erstelleTextfeld(){
for(var i:int=1; i<3; i++){
this["textF"+i].autoSize = TextFieldAutoSize.LEFT;
textFormat(this["textF"+i], tickerTextArr[i-1]);
}
textF1.x = tickerSize;
textF2.x = textF1.x + textF1.width;
}
//Textformat
function textFormat(textF:TextField, textInhalt:String) {
var format:TextFormat = new TextFormat();
format.font = "Verdana";
format.color = textFarbe;
format.size = textGroeße;
format.underline = textUnterstrichen;
textF.defaultTextFormat = format;
textF.text = textInhalt;
ticker.addChild(textF);
}
var a:int = 2;
erstelleTextfeld();
ticker.mask = createMask(tickerPosX, tickerPosY, tickerSize);
//Startet oder Stoppt den Textablauf.
function onOffTicker(go:Boolean){
go ? timing.start() : timing.stop();
}
onOffTicker(starten);
//laesst die Textfelder laufen
function runTicker(evt:Event){
for(var i:int=0; i<ticker.numChildren;i++){
ticker.getChildAt(i).x += -1;
if((ticker.getChildAt(i).x+ticker.getChildAt(i).width)<=0){
ticker.getChildAt(i).x = ticker.getChildAt(Math.asin(i+1)).x+ticker.getChildAt(Math.asin(i+1)).width;
ticker.getChildAt(i) == textF1 ? textF1.text = tickerTextArr[a] : textF2.text = tickerTextArr[a];
a<tickerTextArr.length-1 ? a++ : a=0;
}
}
}
//Erstellt die Maske und Positioniert das ticker-Objekt danach aus!
function createMask(pObjX:int, pObjY:int, pObjWidth:int):Sprite{
maske.x = pObjX;
maske.y = pObjY;
maske.graphics.beginFill(0x000000);
maske.graphics.drawRect(0, 0, pObjWidth, ticker.height);
ticker.x = maske.x;
ticker.y = maske.y;
return maske;
}