![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Не могу понять, почему когда я изменяю значения на прямую - они не меняются в массиве data? Почему флеш создаёт независимые объекты внутри массива? Это же объект и я думал что при присваивании его другой переменной будет создана ссылка на этот объект в памяти, а не новый объект. Так или иначе, как мне создать именно ссылку на объект в памяти, которая будет хранится в массиве, а не новый независимый объект, который продублирует текущее состояние независимого объекта?
|
|
|||||
|
Да ссылки, никто новых не создавал.
Но вот меняете вы не settings.что_нибудь, а пишете settings = чегонить. Естественно в массиве лежит ссылка на старый объект, а в переменной новая ссылка. Ссылка в переменной и массиве в данном случае равнозначны. Это именно ссылки на объект в каком-то месте. И не в массиве и не в переменной, куча это место называется. Вот вы видимо и создаёте сами ручками новый объект и присваиваете ссылку на него в переменную, в массиве естественно ссылка на старый объект. Это мои телепатические догадки. Если я не прав, то покажите минимально достаточную демонстрацию, с трейсами что не так.
__________________
:) |
|
|||||
|
Собственно - расширенный вариант:
public static var settings:Object; public static var info:Object; static public const DATA_LOADED:String = "dataLoaded"; private var data:Array = [settings, info]; ............... private function infoLoaded(result:Object):void { info = result; //data = [settings, info]; dataLoaded(); trace("Описание загрузилось", Data.settings); } private function settingsLoaded(result:Object):void { settings = result; //data = [settings, info]; dataLoaded(); trace("Настройки загрузились", Data.settings); } |
|
|||||
|
Всё верно, т.к. Вы берёте совершенно другой Object и ссылку на него кладёте в settings, а так как в массиве лежит ссылка на старый settings (который null), то и результат Вы не наблюдаете.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|