![]() |
Как получить копию массива?
Вложений: 1
Всем драсти!
У меня такая проблема - отчегото не получается скопировать Array a1 в a3. Вместо копирования выходит что a3 содержит указатели на а1 и все изменения в а3 меняют и родича а1 (но необходимо чтоб а1 оставался нетронут)... Должно сразу сказать, что с одномерным массивом всё исправно работает! Как "выход" испробовал копирование каждого "этажа" массива с помощью FOR, но ведь это не выход.. Хотелось бы знать - возможно ли это организовать без трех страниц кода??? Всего то и хотелось бы получить копию одного МНОГОМЕРНОГО массива. Код, что не катит (Вложение 15485): Код:
var i:Number=0;Код:
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,10]]; |
Пасиб большое за ответ! :rolleyes:
Но неужели нельзя прощще?? Этот код для примера был. На деле массив 100 на 100! Ролик 50 кадров в сек. В каждом кадре необходимо вносить изменения в копию массива не затрагивая оригинал.. Этож как всё будет тормозить то?! В C++, Basic, не грю уж про ASM - простенько и элегантно решается так... Хм.. Видно только не в Action Script? Что по вашему коду - не прощще ли тогда так: Код:
for(i=0;i<ВСЕГО_ЭТАЖЕЙ_МАССИВА;i++) a3[i]=a1[i].concat();Вот и хотелось бы услышать от знатоков - нельзя ли без циклов и прочих "излишеств" скопировать один "многоэтажный" массив в другой??? |
Не знаю как в Си, а в бейсике массиве были точно многомерные, а вот в АС многомерных массивом не существует. То что мы зовем многомерными массивами, являются лишь их эмуляцией, отсюда и проблемы.
|
Нет, нельзя.
|
Драсти-приехали :mad: А как хорошо всё начиналось :D Тогда создам ещё одну тему... про String в роли массива. Можно да? :rolleyes:
|
Массив в AS нельзя считать полноценным массивом, так как массив AS -это обьект с набором свойств(елементы "массива"). Возможно по этому так нельзя делать. Можно сделать так arr2=arr1, только в данном случае массив arr2 можно считать ссылкой на массив arr1, при изменении значения в массиве arr1 оно же будет менатся в массиве arr2, но можно менять елементы массива arr2 и эти изменения никак не повлияют на массив arr1.
|
Благодарю за ответы! Даж не ожидал такой отзывчивости :rolleyes: Признаюсь мануал читал а ангийским владею к сожалению не безупречно, потому и подумал - не упустил ли какой "секретной" функции. И сторонние книжечки перелистал не раз. Вот уперлось вощщем всё в эти массивы и точка... Пробую разные варианты - некоторые привел как пример. Ваши советы работают - но важна максимальная производительность.
|
Цитата:
|
Можно копировать объекты с помощью класса mx.utils.ObjectCopy
посмотрите в классах поставляемых с флэшом документацию ( не в документации, а документацию в классе - комментарии) |
| Часовой пояс GMT +4, время: 08:33. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.