Я не запускал ваш код, поэтому не могу понять, почему не работает доступ Array
, если честно, похоже, что должен!
Однако у меня естьпара вопросов, почему вам нужно, чтобы ваши шары были в двух массивах, и зачем они вообще нужны в массиве, вы сможете получить к ним доступ, как дети DisplayObjectContainer
, в которых они сидят.
Относительно двух циклов for
, вместо того, чтобы их вкладывать, выполните один цикл и используйте арифметику modulo
для построения сетки шаров (по модулю обернут диапазон чисел, например, например,часы заводятся 24 часа.)
Например:
var orb_strip = new Array();
public function OrbArray() {
var orbHorizontalSpacing:int = 50;
var orbVerticalSpacing:int = 100;
var orbRowSize:int = 10;
var orbColumnSize:int = 10;
var totalNumberOfOrbs:int = orbRowSize * orbColumnSize;
for (var i:uint = 0; i < totalNumberOfOrbs; i ++)
{
var orb:Orb = new Orb();
// derive x from modulo totalNumberOfOrbs index (i) by orbRowSize.
orb.x = (i%orbRowSize * orbHorizontalSpacing);
// derive y from totalNumberOfOrbs index (i) by orbColumnSize
orb.y = (Math.floor(i / orbColumnSize) * orbVerticalSpacing);
orb.alpha = 0.3;
orb.orbText.text = ("orb" + i ); // i is now 0 to totalNumberOfOrbs
orb.label = "blank";
orb.type = "speak";
orb.mouseChildren = false;
orb.addEventListener(MouseEvent.MOUSE_OVER, orbMouseOver);
orb.addEventListener(MouseEvent.CLICK, orbClick);
orb.addEventListener(MouseEvent.MOUSE_OUT, orbMouseOut);
orb_strip.push(orb); // an orb is born!
addChild(orb);
}
}
К которым все еще относится массив, если вы считаете, что он вам действительно нужен.
Обновление:
Я бы порекомендовал вам использовать модуль по модулю, чтобы определить, находится ли Orb в начале или конце строки, вместо 2D-массива ...
Но в отношении того, почему доступ к массиву не являетсяработает, ну, это научит меня не смотреть на ваш оригинальный код.У вас есть только один orb_strip
массив, создаваемый на уровне класса, вам понадобится массив для каждой строки.