проблема с элементами массива
добрый вечер... столкнулся я с проблемой, о которой вобщем даже писать смешно.... вот есть у меня такой участок кода
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 является по сути просто указателем на тип юнита, и никак не связана я идентификацией элементов
я часа два бился над этой проблемой, так и не смог решить её... надеюсь только на вашу помощь
|