Показать сообщение отдельно
  #1 (permalink)  
Старый 04.09.2008, 01:05
Krinart
 
Сообщений: n/a

проблема с элементами массива
добрый вечер... столкнулся я с проблемой, о которой вобщем даже писать смешно.... вот есть у меня такой участок кода


i= 0;

for(var iHero= 0; iHero<Heroes.length; iHero++)
{
for(iUnit= 0; iUnit<Heroes[iHero].heroUnit.length; iUnit++)
{
// создадим запись в таблице Units
Units[i]= new Array();
Units[i]= UnitsTable[Heroes[iHero].heroUnit[iUnit]];

// добавим id героя-хозяина
Units[i].heroID= iHero;


Units[i].coord= new Array(); // обяъвим массив координат клетки юнита
Units[i].coord.left= -1; // x- координата
Units[i].coord.top= -1; // y- координата


// вместо id заготовки юнита в таблицу Heroes впишем id созданного юнита

Heroes[iHero].heroUnit[iUnit]= i;
i++;
}
}



здесь из таблицы UnitsTable, где хранятся шаблоны юнитов, выбирается нужный и всталяется в таблицу Units, а id этой записи заносится в массив юнитов героя

и всё бы ничего, но есть одна загвоздка, измение какогонибудь поля в строке любого элемента, почемуто меняет все остальные, в которых поле unitID совпадает
напрмер есть такой участок кода

Units[1].coord.left= 220;

после этого поле coord.left становится равным 220 у всех элементов, у которых поле
unitID== Units[1].unitID

хотя unitID является по сути просто указателем на тип юнита, и никак не связана я идентификацией элементов

я часа два бился над этой проблемой, так и не смог решить её... надеюсь только на вашу помощь
Ответить с цитированием