Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 08.02.2010, 20:47
Lexa_ вне форума Посмотреть профиль Отправить личное сообщение для Lexa_ Найти все сообщения от Lexa_
  № 1  
Ответить с цитированием
Lexa_

Регистрация: Mar 2009
Сообщений: 33
По умолчанию creationComplete и вложенные компоненты

Схема такая:
"application"-b-c
|
a
У приложения состояния а и b, в которые грузятся компоненты соответственно. У компонента b есть состояние с, в котором грузится соответсвующий компонент. Нужно передать данные из компонента "a" в компонент "с". Если последовательно менять состояния - компонент "c" не успевает грузиться. А как отловить на нем creationComplete чет не догоню.

Приложение
Код AS3:
<?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>
Компонент a
Код AS3:
<?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>
Компонент b
Код AS3:
<?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>
Компонент C
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300">
	<mx:Label id="testText" text="" horizontalCenter="0" verticalCenter="0" fontSize="36"/>
 
</mx:Canvas>

Старый 08.02.2010, 21:12
nocoments вне форума Посмотреть профиль Отправить личное сообщение для nocoments Найти все сообщения от nocoments
  № 2  
Ответить с цитированием
nocoments

Регистрация: Jan 2010
Сообщений: 37
Код AS3:
 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" createComplite="create">
</mx:Application>

Старый 09.02.2010, 13:05
Lexa_ вне форума Посмотреть профиль Отправить личное сообщение для Lexa_ Найти все сообщения от Lexa_
  № 3  
Ответить с цитированием
Lexa_

Регистрация: Mar 2009
Сообщений: 33
Как в самом компоненте - ежу понятно, а вот как это событие отловить в другом компоненте. Дело в том, что

Код AS3:
parentApplication.compB.compC.addEventListener(FlexEvent.CREATION_COMPLETE, eventFunction);
Не срабатывает, потому как компонент "с" еще не создался.

Старый 09.02.2010, 13:09
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 4  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Код AS3:
<mx:Application creationPolicy="all" .../>
__________________
2+2=5

Старый 09.02.2010, 14:10
Lexa_ вне форума Посмотреть профиль Отправить личное сообщение для Lexa_ Найти все сообщения от Lexa_
  № 5  
Ответить с цитированием
Lexa_

Регистрация: Mar 2009
Сообщений: 33
creationPolicy="all" не работает, он просто не успевает создавать все компоненты и, опять же, напарываемся на нулевой объект.

В общем вот решение:
Код AS3:
 
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;
	}
}

Старый 09.02.2010, 14:57
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 6  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Цитата:
creationPolicy="all" не работает, он просто не успевает создавать все компоненты и, опять же, напарываемся на нулевой объект.
А у вашего компонента пробовали выставлять creationPolicy="all" ?
__________________
2+2=5

Старый 09.02.2010, 15:13
Lexa_ вне форума Посмотреть профиль Отправить личное сообщение для Lexa_ Найти все сообщения от Lexa_
  № 7  
Ответить с цитированием
Lexa_

Регистрация: Mar 2009
Сообщений: 33
Да, ради эсперимента везде проставлял.

Создать новую тему Ответ Часовой пояс GMT +4, время: 18:00.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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