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

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

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

Регистрация: Sep 2008
Адрес: Черкассы
Сообщений: 1,167
Записей в блоге: 1
Отправить сообщение для AlexCooper с помощью ICQ Отправить сообщение для AlexCooper с помощью Skype™
По умолчанию Получения ссылок на объекты

Здравствуйте.
При работе с вектором в качестве плотного массива определённого класса, возникают "проблемы" с тем что при получении ссылки на плотный массив, создаются копии вложенных данных, и при изменении их, оригинал остается прежним.

Класс который отдает массив данных
Код AS3:
package
{
	public class Library extends Object 
	{
		public function Library() 
		{	
		}
 
		private var _list:Vector.<Item> = new Vector.<Item>;
 
		public function get list():Vector.<Item> {
			return _list;
		}
 
 
		public function parse(xml:XMLList):void 
		{
 
			var item:Item;
 
			for (var i:int = 0; i < xml.length(); i++)
			{
				item = new Item();
 
				item.name = xml[i].@name;
				item.webVideoURL = xml[i].@url_video;
				item.webAudioURL = xml[i].@url_audio;
				item.version = xml[i].@version;
 
				_list.push(item);
			}
		}
	}	
}
// класс данных
Код AS3:
public class Item {
 
	public function Item() {}
 
	public var id:Number = 0;
 
	public var name:String = '';
 
	public var webAudioURL:String = '';
 
	public var localAudioURL:String = '';
 
	public var webVideoURL:String = '';
 
	public var localVideoURL:String = '';
 
	public var status:Boolean = false;
 
	public var version:String = "";
 
}
и где то в основном классе я изменяю один из объектов Item
Код AS3:
var _list:Vector.<Item> = lib.list; // lib это Library уже с проинициализированный и пропарсеный 
(_list[0] as Item).status = true;
он изменяется только в _list:Vector.<Item>, в экземпляре класса Library данные не изменяются, то-есть lib.list вернёт мне тот же массив со старыми данными. Как мне получить обратную ссылку, чтоб при изменения относительно "родительского источника" данных, а не их копии.
__________________
return this...

Старый 22.08.2013, 23:02
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Не верю (с)

Добавлено через 1 минуту
Код AS3:
trace(lib.list === lib.list)
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

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

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


 


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


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