Просмотр полной версии : Сохранение объектов на View при переходах между ними
Astraport
24.01.2012, 19:45
Допустим у меня на одном View добавляется программно несколько DisplayObjects. Мне нужно вернуться на предыдущий View или на любой другой, но так чтобы все эти объекты остались, т. к. потом будет возврат и добавление новых объектов. Можно конечно все их сохранять с координатами потом опять размещать, но есть такой текст http://corlan.org/2011/01/12/understanding-flex-mobile-views-and-viewnavigator/
Там прямо написано, что можно все сохранить, если выставить у view параметр destructionPolicy="never" (по ссылке, кстати, он пишет про "none", но это видимо старая версия), то все сохранится в памяти. А вот sessionCachingEnabled вообще такого нет свойства у ViewNavigatorApplication.
В общем вопрос в том что и с destructionPolicy="never" не работает сохранение всех этих объектов.
sessionCachingEnabled переименовали в persistNavigatorState
Astraport
24.01.2012, 22:17
Угу, теперь свойство появилось, спасибо.
Но как оказалось оно мне не нужно - оно вообще кэширует все приложение, если, например, поставить persistNavigatorState = 'true', то при полном закрытии приложения во время активного View со всеми добавленными элементами и при новом открытии откроется именно это View и элементы будут присутствовать. Может быть и пригодится, но мне нужно совсем другое - чтобы при переходах между View на одном из них оставались в целости и сохранности все добавленные элементы.
По справке за это отвечает destructionPolicy, но не работает. Может быть нужно как-то по другому вызывать View? Я делаю например navigator.pushView(views.ColorPickerView, obj);
Я делаю например navigator.pushView(views.ColorPickerView, obj);
В таком случае вы должны восстановить состояние исходя из информации в obj. Вы же первым параметром передаете класс, откуда там возьмется состояние?
Astraport
25.01.2012, 13:07
В таком случае вы должны восстановить состояние исходя из информации в obj.
Так и делаю, но тогда зачем нужен destructionPolicy? Думал, он поможет.
Возможно он имеет значение для TabbedViewNavigator, досконально не разбирался.
Astraport
25.01.2012, 15:23
Он для ViewNavigator тоже работает, но в плане компонентов создаваемых MXML только. Например, если перейти с List на другой View, то при возвращении обратно выбранный итем будет выделен. Но для программно добавляемых компонентов - нет.
Тогда и при программном добавлении работает. Но вы же добавляете новые View, со всеми вытекающими.
Astraport
25.01.2012, 19:31
Но вы же добавляете новые View, со всеми вытекающими.
А разве есть способ не добавлять новых View?
Мне вот нужно из главного вью, где создается допустим блок-схема из разных элементов, по клику на элемент схемы вызвать вью с настройками (цвет, толщина линий, текст), в этом вью все что нужно изменить и вернуться обратно назад на главное вью и внести изменения в редактируемом элементе блок-схемы.
Сейчас я все элементы, их свойства и координаты пишу в глобальный ArrayCollection при каждом таком вызове нового вью, а при возвращении элементы пропадают, поэтому опять их рисую на основе данных ArrayCollection.
а при возвращении элементы пропадают
При возвращении куда? И каким способом?
Astraport
25.01.2012, 23:41
А разве так много вариантов?
Туда и обратно использую pushView, т. к. приходится таскать туда и обратно ArrayCollection.
А зачем обратно pushView?
Astraport
26.01.2012, 13:12
А зачем обратно pushView?
Потому что popView() не возвращает объект с параметрами. А мне нужно вернуть изменение свойств блок-схемы.
Что значит не возвращает? poppedViewReturnedObject (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/spark/components/ViewNavigator.html#poppedViewReturnedObject)
Astraport
26.01.2012, 13:20
Хмм... спасибо. Смотрел на него раньше и не проверил.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.