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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 02.10.2012, 20:39
Unkeep вне форума Посмотреть профиль Отправить личное сообщение для Unkeep Найти все сообщения от Unkeep
  № 1  
Ответить с цитированием
Unkeep
 
Аватар для Unkeep

Регистрация: Sep 2012
Сообщений: 26
Question как скопировать все ЗНАЧЕНИЯ Vector.<T>

Здравствуйте. Как скопировать все значения Vector.<Face> (причём Face-класс. в котором главный атрибут Vector.<Point>). Мне нужно именно скопировать значения, а не ссылки. Чтобы изменения сделанные в скопированном векторе не затрагивали оригинала.

Старый 02.10.2012, 20:53
Frost47rus вне форума Посмотреть профиль Отправить личное сообщение для Frost47rus Найти все сообщения от Frost47rus
  № 2  
Ответить с цитированием
Frost47rus
[+4 08.09.13]

Регистрация: May 2012
Сообщений: 131
Код AS3:
var VectorCopy:Vector.<Face> = new Vector.<Face>();
for (var i:int = 0; i < MyVector.length; i++){
 var face:Face = new Face();
 face.attribute = MyVector[i].attribute;
 VectorCopy.push(face);
}

Старый 02.10.2012, 20:55
derhab вне форума Посмотреть профиль Отправить личное сообщение для derhab Найти все сообщения от derhab
  № 3  
Ответить с цитированием
derhab
 
Аватар для derhab

Регистрация: Apr 2001
Адрес: Berlin
Сообщений: 1,862
Отправить сообщение для derhab с помощью ICQ Отправить сообщение для derhab с помощью Skype™
Vector#slice() не подойдет?
__________________
freelance | Раздор

Старый 02.10.2012, 20:56
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 4  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
автоматически сделать этого невозможно

вам нужно в цикле пройтись по всем элементам вектора и создать клон каждого Face, занося эти клоны в новый вектор

ну и клонируя Face тоже нужно в цикле клонировать Point-ы

будь у вас там вместо Face и Point нетипизированные object-ы можно было бы клонировать так
Код AS3:
public static function cloneVanillaObject( obj:Object ):Object{
	var ba:ByteArray = new ByteArray();
	ba.writeObject( obj );
	ba.position = 0;
	return ba.readObject() as Object;
}
Добавлено через 4 минуты
@Frost47rus там вектор векторов, поэтому вместо строчки
Код:
face.attribute = MyVector[i].attribute;
нужен еще один цикл
__________________
Хороший отдых - половина работы.

Старый 02.10.2012, 21:05
Unkeep вне форума Посмотреть профиль Отправить личное сообщение для Unkeep Найти все сообщения от Unkeep
  № 5  
Ответить с цитированием
Unkeep
 
Аватар для Unkeep

Регистрация: Sep 2012
Сообщений: 26
спасибо. Жаль что другого варианта нет

Старый 02.10.2012, 21:12
artcraft вне форума Посмотреть профиль Отправить личное сообщение для artcraft Посетить домашнюю страницу artcraft Найти все сообщения от artcraft
  № 6  
Ответить с цитированием
artcraft
 
Аватар для artcraft

блогер
Регистрация: Aug 2005
Адрес: www.artcraft.cz
Сообщений: 1,967
Записей в блоге: 6
Отправить сообщение для artcraft с помощью ICQ
впрочем можно похимичить с клонирование через ByteArray и испльзуя registerClassAlias()
не знаю как оно будет вести себя с вложенными объектами

Добавлено через 4 минуты
советую копать вот в этом направлении
http://www.rozengain.com/blog/2009/0...tionscript-30/
http://jafferhaider.wordpress.com/20...ctionscript-3/
https://github.com/as3/as3-utils/blo...bject/clone.as
__________________
Хороший отдых - половина работы.

Старый 02.10.2012, 22:23
Unkeep вне форума Посмотреть профиль Отправить личное сообщение для Unkeep Найти все сообщения от Unkeep
  № 7  
Ответить с цитированием
Unkeep
 
Аватар для Unkeep

Регистрация: Sep 2012
Сообщений: 26
пошёл в обходную. Решил не заморачиваться с копированием, а на этапе заполнения вектора значениями заносить их в копию.

Старый 03.10.2012, 05:16
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 8  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
Сообщение от artcraft Посмотреть сообщение
не знаю как оно будет вести себя с вложенными объектами
Нормально будет себя вести, естественно, для невизуальных объектов реализующих IExternalizable.
__________________
משיח לא בא
משיח גם לא מטלפן

Старый 03.10.2012, 15:00
tsarapkabel вне форума Посмотреть профиль Отправить личное сообщение для tsarapkabel Найти все сообщения от tsarapkabel
  № 9  
Ответить с цитированием
tsarapkabel
 
Аватар для tsarapkabel

Регистрация: Nov 2009
Адрес: в златоглавой
Сообщений: 745
Цитата:
Сообщение от alatar Посмотреть сообщение
Нормально будет себя вести, естественно, для невизуальных объектов реализующих IExternalizable.
Можно поподробнее, как ты это определил? Почему IExternalizable?
__________________
Нормально делай — нормально будет!

Старый 03.10.2012, 16:25
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 10  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
1. На практике.
2. Потому, что объекты должны уметь себя сериализовать/десериализовать, что бы нормально и контролируемо восстановить свое состояние.
http://help.adobe.com/ru_RU/FlashPla...nalizable.html
__________________
משיח לא בא
משיח גם לא מטלפן

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

Теги
AS 3 , Vector , скопировать значение , скопировать массив
Опции темы
Опции просмотра

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

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


 


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


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