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

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

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

Регистрация: Mar 2011
Сообщений: 14
По умолчанию Отправка события между mxml-компонентами.

Есть ViewStack, в котором допустим три отдельных mxml компонента, открывающихся по клику на нужной кнопке с помощью ViewStack.selectedChild. Мне необходимо, чтобы при каждом открытии определенного компонента выполнялась функция, определенная внутри него. С помощью ceationComplete - она выполняется только один раз(чего и следовало ожидать)

Думаю сделать с помощью событий.
Попробывал так:

Код:
var myEventObj:Event = new Event( "myCustomEvent" );
				dispatchEvent( myEventObj );
+
Код:
<fx:Metadata>
		[Event(name="myCustomEvent", type="flash.events.Event")]
</fx:Metadata>
это в компоненте, где лежат кнопки при клике кнопки, открывающей компонент.

А в открывающемся компоненте:

Код:
<components:ViewComponent id="MyComponent" myCustomEvent="onMyCustomEvent(event)"/>
ну и соответственно OnMyCustomEvent - нужная мне функция.

не работает. событие не ловится вообще.

Прошу помощи...


Последний раз редактировалось wvxvw; 26.03.2011 в 00:52.
Старый 24.03.2011, 16:34
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Событие show
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 24.03.2011, 16:51
DanMolti вне форума Посмотреть профиль Отправить личное сообщение для DanMolti Найти все сообщения от DanMolti
  № 3  
Ответить с цитированием
DanMolti
 
Аватар для DanMolti

Регистрация: Mar 2011
Сообщений: 14
если в открывающемся кмпоненте show прописываю - не происходит оно(((

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

Регистрация: Mar 2011
Сообщений: 14
при изменении selectedChild не передается show((

Добавлено через 42 секунды
поэтому не работает. Еще мысли есть у кого-нибудь? очень нужно - второй день сижу с этим.

Старый 24.03.2011, 18:47
xsar вне форума Посмотреть профиль Отправить личное сообщение для xsar Найти все сообщения от xsar
  № 5  
Ответить с цитированием
xsar

Регистрация: Mar 2011
Сообщений: 29
addedToStage тоже не срабатывает?
Есть еще вариант слушать у ViewStack событие change.

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

Регистрация: Mar 2011
Сообщений: 14
addedToStage почему-то зацикливается и происходит постоянное, многократное выполнение функции

Добавлено через 53 секунды
А вот как слушать CHANGE ViewStack одного компонента в другом я бы ОЧЕНЬ хотел узнать)) можно поподробнее?

Добавлено через 6 минут
щас еще раз попробывал adddedtoStage - оно когда первый раз запускаешь - то работает, а если второй раз(ушел на другой компонент и обратно на первый) уже не работает. то есть св-во только при инициализации выполняется((

Старый 24.03.2011, 19:06
alatar вне форума Посмотреть профиль Отправить личное сообщение для alatar Найти все сообщения от alatar
  № 7  
Ответить с цитированием
alatar
 
Аватар для alatar

блогер
Регистрация: Dec 2008
Адрес: Israel, Natanya
Сообщений: 4,740
Записей в блоге: 11
Цитата:
при изменении selectedChild не передается show((
show / hide отправляют сами компоненты. Можете просто в компоненте переопределить метод setVisible и в нем вызывать вашу функцию:
Код AS3:
override public function setVisible(value:Boolean,
                               noEvent:Boolean = false):void
{
    super.setVisible(value, noEvent);
    /*тут вызываете вашу функцию
       если используются эффекты,
       то надо дождаться окончания эффекта
    */
}
То, что вы пытаетесь проделать с событиями у вас не получится. Тут или надо отправлять событие непосредственно в компонент, либо реализовывать свою шину событий, по которой их и гонять.

Старый 24.03.2011, 19:11
DanMolti вне форума Посмотреть профиль Отправить личное сообщение для DanMolti Найти все сообщения от DanMolti
  № 8  
Ответить с цитированием
DanMolti
 
Аватар для DanMolti

Регистрация: Mar 2011
Сообщений: 14
сейчас попробую. насчет шины уже начал думать(вспомнил как устроена вся эта тема в PureMVC),
но уж очень не велика задача при таком решении.

как попробую - отпишусь

Старый 24.03.2011, 19:13
xsar вне форума Посмотреть профиль Отправить личное сообщение для xsar Найти все сообщения от xsar
  № 9  
Ответить с цитированием
xsar

Регистрация: Mar 2011
Сообщений: 29
Код AS3:
viewStack.addEventListener(IndexChangedEvent.CHANGE,function (event:IndexChangeEvent):void{
			switch (event.newIndex){
			case 0: //выполняем одну функцию
			case 1: //выполняем вторую функцию
			case 3: //выполняем третью функцию
 
			}
		});
Такой вариант разве не работает?

Старый 24.03.2011, 19:17
DanMolti вне форума Посмотреть профиль Отправить личное сообщение для DanMolti Найти все сообщения от DanMolti
  № 10  
Ответить с цитированием
DanMolti
 
Аватар для DanMolti

Регистрация: Mar 2011
Сообщений: 14
тут похоже вот в чем дело - когда я меняю selectedChild - компонент становится видимым, потом я еще раз меняю selectedChild и обратно, но элементы ViewStack не скрываются, а просто вылазеют друг на друга и поэтому функция SetVisible выполняется только один раз. Надо разобраться.

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

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

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


 


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


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