Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

08.09.2011, 11:35

Multidimensionale Arrays in Flash

Hey Leute,
ich versuche mich gerade an einem Tetris Klo und wollte
die Stein-Matritzen in einem Array haben:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
        private var xValues:Array = new Array();
        xValues[0] = [100, 80, 120, 140];
        xValues[1] = [100, 80, 120, 100];
        xValues[2] = [100, 120, 100, 120];
        xValues[3] = [100, 120, 120, 120];
        xValues[4] = [100, 120, 100, 100];
        xValues[5] = [100, 120, 120, 140];
        xValues[6] = [100, 120, 100, 80];
        
        private var yValues:Array = new Array();
        yValues[0] = [0, 0, 0, 0];
        yValues[1] = [0, 0, 0, 20];
        yValues[2] = [0, 0, 20, 20];
        yValues[3] = [0, 0, 20, 40];
        yValues[4] = [0, 0, 20, 40];
        yValues[5] = [0, 0, 20, 20];
        yValues[6] = [0, 0, 20, 20];


Auf allen Seiten von Adobe steht, man solle es so machen.
Mein Compiler sieht das anders:

Quellcode

1
C:\...\src\Tile.as(11): col: 3 Error: Access of undefined property xValues.


So langsam beginne ich zu verzweifeln.
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

2

08.09.2011, 11:57

Kannst du etwas mehr von deinen Code zeigen? Was ich mich hier frage ist:

1. Der Code den du gepostet hast steht der in einer Funktion
oder 2. Steht der Code so wie du ihm gepostet hast irgendwo anders?

Ich frage weil ich es seltsam finde das du den Qualifier private vor die Definition deiner Arrays geschrieben hast.

3

08.09.2011, 12:04

Okay:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    public class Tile 
    {
        private var xValues:Array = new Array();
        xValues[0] = [100, 80, 120, 140];
        ...
        
        private var yValues:Array = new Array();
        yValues[0] = [0, 0, 0, 0];
        ...
        
        var Blocklist:Array = new Array();
        
        public function Tile() 
        {
            var kind:int = Math.round(Math.random() * 7);
            
            for (var i:int = 0; i < 4; i++)
            {
                Blocklist[i] = new Block(xValues[kind][i], yValues[kind][i], this);
            }
        }


Ich habe die Arrays mal gekürzt.
Private steht da, weil es nur in dieser Klasse genutzt wird.
Der Code steht so nirgendwo anders.
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

08.09.2011, 12:17

Ich kenne mich zwar mit AS nicht aus, aber müssten diese Zeilen, wo Du das Array mit weiteren Arrays füllst, nicht im Konstruktor der Klasse stehen?

DerMark

Treue Seele

Beiträge: 324

Wohnort: Emsdetten

Beruf: Softwareentwickler

  • Private Nachricht senden

5

08.09.2011, 12:17

Du solltest die Initialisierung der ArrayElemente lieber in den konstruktor verschieben, ich bin mir nicht sicher was Flash angeht, vermute aber das es nicht möglich ist Operationen direkt im Class Body auszuführen.

6

08.09.2011, 12:19

Danke das wars.
Gewinnen ist, wenn man einmal mehr aufsteht, als man zu Boden geht.

Werbeanzeige