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