![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 33
|
Схема такая:
"application"-b-c | a У приложения состояния а и b, в которые грузятся компоненты соответственно. У компонента b есть состояние с, в котором грузится соответсвующий компонент. Нужно передать данные из компонента "a" в компонент "с". Если последовательно менять состояния - компонент "c" не успевает грузиться. А как отловить на нем creationComplete чет не догоню. Приложение <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:ns1="*" currentState="a"> <mx:states> <mx:State name="a"> <mx:AddChild position="lastChild"> <ns1:a x="0" y="0"> </ns1:a> </mx:AddChild> </mx:State> <mx:State name="b"> <mx:AddChild position="lastChild"> <ns1:b x="0" y="0" id="compB"> </ns1:b> </mx:AddChild> </mx:State> </mx:states> </mx:Application> <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"> <mx:Script> <![CDATA[ public function setData():void { parentApplication.currentState = "b"; parentApplication.compB.currentState = "c"; parentApplication.compB.compC.testText.text = inputText.text; } ]]> </mx:Script> <mx:TextInput x="10" y="10" id="inputText"/> <mx:Button x="10" y="40" label="Set data" id="testButton" click="setData()"/> </mx:Canvas> <?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300" xmlns:ns1="*"> <mx:states> <mx:State name="c"> <mx:AddChild position="lastChild"> <ns1:c x="0" y="0" id="compC"> </ns1:c> </mx:AddChild> </mx:State> </mx:states> </mx:Canvas> |
|
|||||
|
Регистрация: Jan 2010
Сообщений: 37
|
|
|
|||||
|
Регистрация: Mar 2009
Сообщений: 33
|
Как в самом компоненте - ежу понятно, а вот как это событие отловить в другом компоненте. Дело в том, что Не срабатывает, потому как компонент "с" еще не создался. |
|
|||||
|
__________________
2+2=5 |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 33
|
creationPolicy="all" не работает, он просто не успевает создавать все компоненты и, опять же, напарываемся на нулевой объект.
В общем вот решение: public function setData():void { parentApplication.currentState = "b"; parentApplication.compB.addEventListener(StateChangeEvent.CURRENT_STATE_CHANGE, stateChangeComplete); //вешаем слушателя изменений состояний на компонент b parentApplication.compB.currentState = "c"; } private function stateChangeComplete(event:StateChangeEvent) { if (event.newState == "c") { //проверяем, имя нового состояния, если оно, значит компонент уже добавлен и доступны его свойства parentApplication.compB.compC.testText.text = inputText.text; } } |
|
|||||
|
Цитата:
__________________
2+2=5 |
|
|||||
|
Регистрация: Mar 2009
Сообщений: 33
|
Да, ради эсперимента везде проставлял.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 18:00. |
|
|
« Предыдущая тема | Следующая тема » |
|
|