Ich steh total auf dem Schlauch und komm mir gerade ziemlich dumm vor. Das Ziel besteht darin aus einer Textdatei ein zweidimensionales Array zu erzeugen und im weiteren Code auf die einzelnen Inhalte des Arrays zuzugreifen.
Der erste Teil klappt. Und der Zugriff auf die Inhalte des Arrays klappt auch. Aber nur innerhalb des Event-Handlers, also innerhalb der Funktion die das Array erzeugt.
Ich komm aber nicht drauf, wie ich nun von außerhalb der Array-erzeugenden Funktion das Array nutzen kann. Mein Code:
var _reqTextSlideshow:URLRequest = new URLRequest('skins/skin01/ImageData.txt');
var _LoaderTextSlideshow:URLLoader = new URLLoader();
_LoaderTextSlideshow.load(_reqTextSlideshow);
function LoaderTextSlieshowHandler(e:Event):void
{
var slideshow_txt:String = e.target.data;
var slideshowLines:Array = slideshow_txt.split("n");
var AnzahlSlideshowLines:uint = slideshowLines.length;
var zeile:Array = new Array(AnzahlSlideshowLines);
for (var i:uint = 1; i < AnzahlSlideshowLines; i++)
{
var slideshowRaw:String = slideshowLines[i];
if (slideshowRaw.length > 0)
{
var slideshowInformationen:Array = slideshowRaw.split("t");
var AnzahlSlideshowRaws:uint = slideshowInformationen.length;
var zeilenInhalt:String;
zeilenInhalt = '"' + slideshowInformationen[0] + '"';
for (var i2:uint = 1; i2 < AnzahlSlideshowRaws; i2++){
zeile[i] = slideshowInformationen;
}
}
}
trace(zeile[2][1]);
}
> Und der Zugriff auf die Inhalte des Arrays klappt auch. Aber nur innerhalb des Event-Handlers, also innerhalb der Funktion die das Array erzeugt.
Hallo,
das liegt daran, daß Du die Variablen innerhalb der Funktion definierst. Richtig wäre, am Anfang die Variablen zu definieren und dann in der Funktion die jeweiligen Werte zuweisen.
Grüße,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten.
var _reqTextSlideshow:URLRequest = new URLRequest('skins/skin01/ImageData.txt');
var _LoaderTextSlideshow:URLLoader = new URLLoader();
_LoaderTextSlideshow.load(_reqTextSlideshow);
var Textdaten:Array = new Array;
var slideshow_txt:String;
var slideshowLines:Array;
var AnzahlSlideshowLines:uint;
var zeile:Array ;
var slideshowRaw:String;
var slideshowInformationen:Array;
var AnzahlSlideshowRaws:uint;
var zeilenInhalt:String;
function LoaderTextSlieshowHandler(e:Event):void
{
slideshow_txt= e.target.data;
slideshowLines= slideshow_txt.split("\n");
AnzahlSlideshowLines= slideshowLines.length;
zeile= new Array(AnzahlSlideshowLines);
for (var i:uint = 1; i < AnzahlSlideshowLines; i++)
{
slideshowRaw= slideshowLines[i];
Wahrscheinlich, weil Dein trace("Außerhalb der Funktion: " + Textdaten[2][1]); aufgerufen wird, bevor die Funktion abgearbeitet wurde. Versuch es mal so:
Das klappt so schon. Aber jetzt sind die Werte eben in dieser Funktion gekapselt.
Mein Ziel ist es aus einer Textdatei die zur Konfiguration dienen soll Variablenwerte herauszulesen und über Variablen anderen Funktionen bereit zu halten.
Auf diesem Weg schein es wohl nicht zu gehen. Denn entweder greifen die Funktionen auf den Text zu bevor er geladen ist oder der Text ist in einer Funktion zum Event-Handling gefangen.
Aber das klappt doch jetzt - Du musst nur drauf achten, daß alles erst ausgeführt wird, nachdem die Funktion LoaderTextSlieshowHandler komplett durchlaufen wurde. Mit der Test-Funktion war ja nur ein Beispiel.
Grüße,
KerstinWer Rechtschreibfehler findet, darf sie gerne behalten.
Das würde doch vorraussetzten, dass alle Funktionen, welche auf das Array zugreifen wollen in der LoaderTextSlieshowHandler-Funktion aufgerufen werden müssen. Oder, dass ich alles weitere innerhalb dieser Funktion programmiere.