2D Массив видеоклипов - Ошибка № 1006

Я все еще учусь кодировать в AS3, который кажется довольно простым и похожим на Java, поэтому я прошу прощения, если я где-то допустил глупую ошибку.

Что касается заголовка вопроса, я пытаюсь создать двумерный (вложенный) массив мувиклипа, который я уже создал, чтобы его можно было распечатать на сетке следующим образом.

var NumCols:Number = 8;
var NumRows:Number = 8;
var ColWidth:Number =  (stage.stageWidth-8)/NumCols;
var ColHeight:Number = (stage.stageWidth-8)/NumRows;
var GemMatrix:Array = new Array( 8, 8 );
var n = 1;
var SW:Number = stage.stageWidth;
var SH:Number = stage.stageHeight;

private function GJ_GenerateBoard(event:MouseEvent):void {
// Initialization...
for (var j = 0; j < NumRows; ++j)
{
    GemMatrix[y] = [];
    for (var i = 0; i < NumCols; ++i)
    {
        trace(i,j);
        GemMatrix[i][j] = new Gem() as MovieClip;
        this.addChild(GemMatrix[i][j]);
        GemMatrix[i][j].x = i*ColWidth+ColWidth/2;
        GemMatrix[i][j].y = j*ColHeight+ColHeight/2;
    }
}

Я получаю ошибку:

ReferenceError: Error #1056: Cannot create property 0 on Number.

Это происходит на линии, когда я пытаюсь создать новый экземпляр Gem().

Любая помощь с благодарностью. Спасибо!

1 ответ

Решение

var GemMatrix:Array = new Array( 8, 8);

Это то, что у тебя есть. Это фактически создает одномерный массив, который является [Number(8), Number(8)]. Вам не нужно определять длину массива в AS3, вот как я бы это настроил:

var GemMatrix:Array = [];

for (var i:int = 0; i < NumCols; i++){
    var $a:Array = [];
    for (var m:int = 0; m < NumRows; m++){
        var $gem:MovieClip = new Gem();
        $gem.x = i*ColWidth+ColWidth/2;
        $gem.y = j*ColHeight+ColHeight/2;
        addChild($gem);

        $a.push($gem);
    }
    GemMatrix.push($a);
}

Также эта строка странная: GemMatrix[y] = []; Единственная причина, по которой это не выдает ошибку, заключается в том, что y - это динамическое свойство класса, из которого вы в настоящее время расширяете, которое указывает его позицию y (скорее всего this.y = 0).

Другие вопросы по тегам