1&1 DSL
Flashhilfe.de - Flash Community

Array erzeugen und auf die Inhalte zugreifen [Flash 11]

Forum > ActionScript 3.0 > Array erzeugen und auf die Inhalte zugreifen

 


AntwortenRegistrieren Seite1  

 28.08.2011, 12:09 
Beiträge: 8
Registriert: Aug 2011

Array erzeugen und auf die Inhalte zugreifen
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:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var _reqTextSlideshow:URLRequest = new URLRequest('skins/skin01/ImageData.txt');
var _LoaderTextSlideshow:URLLoader = new URLLoader();
_LoaderTextSlideshow.load(_reqTextSlideshow);

_LoaderTextSlideshow.addEventListener(Event.COMPLETE, LoaderTextSlieshowHandler);

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]);
}
 28.08.2011, 14:00Re1
Benutzerbild von Kerstin77
Beiträge: 924
Registriert: Jul 2008

> 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,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
 28.08.2011, 14:13Re2
Beiträge: 8
Registriert: Aug 2011

Themenautor/in

Hallo Kerstin,

Ich habe versucht deinen Hinweis folgendermaßen umzusetzen:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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];
        
        if (slideshowRaw.length > 0)
 
        {
            slideshowInformationen= slideshowRaw.split("\t");
            AnzahlSlideshowRaws= slideshowInformationen.length;
              
              zeilenInhalt = '"' + slideshowInformationen[0] + '"';
              for (var i2:uint = 1; i2 < AnzahlSlideshowRaws; i2++){
              Textdaten[i] = slideshowInformationen;
              }
        }
     }
  trace("Innerhalb der Funktion: " + Textdaten[2][1]);   
}
trace("Außerhalb der Funktion: " + Textdaten[2][1]);   


Leider führt das zu folgendem Fehler:

TypeError: Error #1010: Ein Begriff ist nicht definiert und hat keine Eigenschaften.
   at imgTest_fla::MainTimeline/frame1()
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 28.08.2011, 14:20Re3
Benutzerbild von Kerstin77
Beiträge: 924
Registriert: Jul 2008

Wahrscheinlich, weil Dein trace("Außerhalb der Funktion: " + Textdaten[2][1]); aufgerufen wird, bevor die Funktion abgearbeitet wurde. Versuch es mal so:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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];
        if (slideshowRaw.length>0) {
           slideshowInformationen=slideshowRaw.split("\t");
           AnzahlSlideshowRaws=slideshowInformationen.length;
 
           zeilenInhalt='"'+slideshowInformationen[0]+'"';
           for (var i2:uint = 1; i2 < AnzahlSlideshowRaws; i2++) {
              Textdaten[i]=slideshowInformationen;
           }
        }
     }
     trace("Innerhalb der Funktion: " + Textdaten[2][1]);
     test();
}

function test():void {
     trace("Außerhalb der Funktion: " + Textdaten[2][1]);
}


Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
 28.08.2011, 14:49Re4
Beiträge: 8
Registriert: Aug 2011

Themenautor/in

Nochmals Danke Kerstin.

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.

ActionScript treibt mich echt noch zum Wahnsinn.
 28.08.2011, 14:57Re5
Benutzerbild von Kerstin77
Beiträge: 924
Registriert: Jul 2008

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,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
 
nicht sichtbar bei eingeloggten Mitgliedern
 28.08.2011, 15:12Re6
Beiträge: 8
Registriert: Aug 2011

Themenautor/in

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.

Oder habe ich da etwas nicht richtig erkannt?
 28.08.2011, 15:18Re7
Benutzerbild von Kerstin77
Beiträge: 924
Registriert: Jul 2008

Genau so sieht es aus.

Grüße,
Kerstin
Wer Rechtschreibfehler findet, darf sie gerne behalten.
 
Themen
Ähnliche Beiträge zum Thema
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de