Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Получения ссылок на объекты (http://www.flasher.ru/forum/showthread.php?t=202966)

AlexCooper 22.08.2013 19:31

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

Класс который отдает массив данных
Код 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 вернёт мне тот же массив со старыми данными. Как мне получить обратную ссылку, чтоб при изменения относительно "родительского источника" данных, а не их копии.

dimarik 22.08.2013 23:02

Не верю (с)

Добавлено через 1 минуту
Код AS3:

trace(lib.list === lib.list)



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

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