Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Создание многомерных массивов и обращение к элементам (http://www.flasher.ru/forum/showthread.php?t=144177)

Emz 05.09.2010 09:00

Создание многомерных массивов и обращение к элементам
 
Никак не могу понять на конкретных задачах, как работают массивы/многомерные массивы и как обращаться к элементам этих массивов, мозг взрывается уже. Например:

Кусочек задачи: при определенных условиях на сцену помещаются мувики (с именами bar2, bar15, bar28 и т.д, но не суть важно). При клике на мувик нужно получать имя мувика и будет осуществляться поиск пути и флага в массиве по этому имени.
Код AS1/AS2:

var Global:Array = new Array(); //будущий многомерный массив типа [имя мувика][путь][флаг]
//nam[nx, ny] вычисляется ранее
 
_root.[nam[nx,ny]] = attachMovie("bar", "bar" + barname, this.getNextHighestDepth(), значениеX, значениеY); //barname -числовое значение, высчитывается раньше
trace(_root.calendar.areabodysel.area3[nam[nx,ny]]._name); //значения типа bar22
trace(_root.calendar.areabodysel.area3[nam[nx,ny]]) // значения типа _level0.bar22
//здесь нужно в массив Global записать: имя мувика "bar" + barname; соответсвующий ему путь; переменная-флаг.
 
 
_root.[nam[nx,ny]].onRelease = function()
  {
      a=this._name; // запоминаем имя кликнутого мувика
      var currIndex:Number = 0; //переменная-счетчик
 
      while(Global[currIndex]){ //поиск по массиву
        if (Global[currIndex] == a){
            if (Global[currIndex[флаг] = false) {
              Global[currIndex][путь мувика].gotoAndStop(2);
              Global[currIndex[флаг] = true;
            }else
            {  Global[currIndex][путь мувика].gotoAndStop(1);
                Global[currIndex[флаг] = false;
            }
        }
      currIndex++;
  }
 
 
trace(_root.calendar.areabodysel.area3[nam[nx,ny]]._name); // здесь выдает undefined!Почему?
trace(_root.calendar.areabodysel.area3[nam[nx,ny]].); // и здесь
trace(this); //_level0.bar22
}


mooncar 05.09.2010 09:59

Двумерный массив нужно эмулировать.
Код AS1/AS2:

var global:Array = new Array();
for (i = 0; i < 100; i++)
{
  global[i] = new Array(); //определяем элементами массива также массив
  for (j = 0; j < 100; j++)
  {
    global[i][j] = j; //задаем элементы "двумерного" массива
  }
}



Часовой пояс GMT +4, время: 13:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.