Показать сообщение отдельно
Старый 15.10.2006, 22:59
SiDDD вне форума Посмотреть профиль Отправить личное сообщение для SiDDD Найти все сообщения от SiDDD
  № 1  
Ответить с цитированием
SiDDD

Регистрация: Oct 2006
Сообщений: 26
По умолчанию Как получить копию массива?

Всем драсти!

У меня такая проблема - отчегото не получается скопировать Array a1 в a3. Вместо копирования выходит что a3 содержит указатели на а1 и все изменения в а3 меняют и родича а1 (но необходимо чтоб а1 оставался нетронут)... Должно сразу сказать, что с одномерным массивом всё исправно работает! Как "выход" испробовал копирование каждого "этажа" массива с помощью FOR, но ведь это не выход.. Хотелось бы знать - возможно ли это организовать без трех страниц кода??? Всего то и хотелось бы получить копию одного МНОГОМЕРНОГО массива.

Код, что не катит (code.rar):
Код:
var i:Number=0;
var a1:Array = [[1,2,3,4,5,6,7,8,9],[1,2,3,4,5,6,7,8,9]];
var a3:Array = new Array();

_root.onEnterFrame=function(){
	
	a3=a1.concat();
	myTest();
	txt1.text=a1;
	txt2.text=a3;
};

function myTest(){
	
	a3[0][i]=333;
	i++;
	if(i==9) i=0;
};
Далее код который работает, но...но если у меня массив из 100 "этажей"? При 50 FPS! Ужас...
Код:
var i:Number=0;
var a1:Array = [[1,2,3,4,5,6,7,8,9],[1,2,3,4,5,6,7,8,9]];
var a2:Array = new Array();
var a2:Array = new Array();
var a3:Array = new Array();

_root.onEnterFrame=function(){
	
	a3=a2.concat(a1);
	a3[0]=a2.concat(a1[0]); // адын этаж
	a3[1]=a2.concat(a1[1]); // два... и так до 100!! Можно FOR использовать - но нельзя ли прощще???
	myTest();
	txt1.text=a1;
	txt2.text=a3;
};

function myTest(){
	
	a3[0][i]=333;
	i++;
	if(i==9) i=0;
};
Эххх...а как элегантно выглядело бы a3=a1........