Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 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........

Создать новую тему   Часовой пояс GMT +4, время: 19:14.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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