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

Вернуться   Форум Flasher.ru > Flash > Flash Приложения: AIR, Zinc и тд.

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.01.2009, 15:06
KaeL вне форума Посмотреть профиль Отправить личное сообщение для KaeL Найти все сообщения от KaeL
  № 1  
Ответить с цитированием
KaeL
[+4 03.04.09]
 
Аватар для KaeL

Регистрация: May 2007
Сообщений: 21
Question Как отловить события окон?

Такой вопрос. Есть 2 mxml: главный и окошко.
Main
Код AS3:
...
private function init(event:Event):void
{
  btnNewWindow.addEventListener(MouseEvent.CLICK, onClick);
}
 
private function listeners(event:Event):void
{
  taText.addEventListener(СustWin.CUSTOM, onCustom); //На событие подписан TextArea
}
 
private function onCustom(event:Event):void
{
 trace("CATCHED");				
}		
 
private function onClick(event:MouseEvent):void
{                                                                           //LINE 26
 var newWindow:NewWindow  = new NewWindow();
 newWindow.open(); 
}
...
Окошко
Код AS3:
...
public static const CUSTOM:String = 'custom';
 
private function init(event:Event):void
{
 btnEvent.addEventListener(MouseEvent.CLICK, onClick);
}
 
private function onClick(event:MouseEvent):void
{
  dispatchEvent (new Event(CUSTOM));
}
...
Собственно, почему не могу отловить событие CUSTOM в Main?
И попутно вопрос, при компиляции вылазит ошибка :1136: Неправильное количество аргументов. Ожидается 1. Location: line 26 (там просто открывающая скобка...см. в коде). Что это может быть?


Последний раз редактировалось KaeL; 07.01.2009 в 15:10.
Старый 07.01.2009, 15:25
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 2  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
У каждого окна свой stage и displaylist, а событие выше stage не всплывает.

Описанная ошибка (1136) может быть вызвана тем, что где-то в mxml Вы написали click="onClick" . Если нет - покажите остальной код, так как по приведенным фрагментам причина неясна.
__________________
4am is time to rock

Старый 07.01.2009, 15:47
KaeL вне форума Посмотреть профиль Отправить личное сообщение для KaeL Найти все сообщения от KaeL
  № 3  
Ответить с цитированием
KaeL
[+4 03.04.09]
 
Аватар для KaeL

Регистрация: May 2007
Сообщений: 21
Собственно кода-то всего ничего, т.к тестил.
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication creationComplete="init(event)" applicationComplete="listeners(event)" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="200">
	<mx:Script>
		<![CDATA[
 
			private function init(event:Event):void
			{
				btnNewWindow.addEventListener(MouseEvent.CLICK, onClick);
			}
 
			private function listeners(event:Event):void
			{
				taText.addEventListener(NewWindow.CUSTOM, onCustom);
			}
 
			private function onCustom(event:Event):void
			{
				trace("CATCHED");				
			}
 
			private function onClick(event:MouseEvent):void
			{
				var newWindow:NewWindow  = new NewWindow();
 	 			newWindow.open(); 
			}
		]]>
	</mx:Script>
	<mx:Button x="10" y="10" label="New window" id="btnNewWindow"/>
	<mx:TextArea x="10" y="40" width="220" height="111" id="taText"/>
</mx:WindowedApplication>
Окошко
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="156" height="84" creationComplete="init(event)">
	<mx:Script>
		<![CDATA[
			public static const CUSTOM:String = 'custom';
 
			private function init(event:Event):void
			{
				btnEvent.addEventListener(MouseEvent.CLICK, onClick);
			}
 
			private function onClick(event:MouseEvent):void
			{
				dispatchEvent (new Event(CUSTOM));
				trace("DISPATCHED");
			}
		]]>
	</mx:Script>
	<mx:Button x="10" y="10" label="Event" id="btnEvent"/>
</mx:Window>
Только начал разбираться с AIR.
Не могли бы вы подсказать, как тогда быть? Что использовать вместо событий?
Задумывалось следующее: По нажатию кнопки вызывать окошко, заполнить его данными и при закрытии занести эти данные в DataGrid.

Старый 07.01.2009, 16:22
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 4  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Вносим эти исправления:

1)
Код AS3:
dispatchEvent (new Event(CUSTOM,true));//если от окошка ловим, то событие должно всплывать
2)
Код AS3:
var newWindow:NewWindow  = new NewWindow();
newWindow.open();
newWindow.addEventListener(NewWindow.CUSTOM, onCustom);
После этого все ловится.

Логика всплывания событий такова, что событие идет вверх до сцены. А Вы пытались поймать его на текстовом поле в другой сцене, куда оно никогда не дойдет. Почитайте про событийную модель в AS3, все станет понятно.
__________________
4am is time to rock


Последний раз редактировалось DarkLight; 07.01.2009 в 16:24.
Старый 07.01.2009, 16:38
KaeL вне форума Посмотреть профиль Отправить личное сообщение для KaeL Найти все сообщения от KaeL
  № 5  
Ответить с цитированием
KaeL
[+4 03.04.09]
 
Аватар для KaeL

Регистрация: May 2007
Сообщений: 21
Огромное спасибо!

з.ы А та ошибочка так и продолжает мозолить глаз

Старый 07.01.2009, 16:50
DarkLight вне форума Посмотреть профиль Отправить личное сообщение для DarkLight Посетить домашнюю страницу DarkLight Найти все сообщения от DarkLight
  № 6  
Ответить с цитированием
DarkLight
ветеран форума
 
Аватар для DarkLight

Регистрация: May 2006
Адрес: Москва
Сообщений: 2,978
Отправить сообщение для DarkLight с помощью ICQ Отправить сообщение для DarkLight с помощью Skype™
Вот код, на котором проверял работоспособность. Ошибка эта у меня не возникает. Разница только в том, что я trace заменил на Alert.show для удобства

Основное приложение:
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication creationComplete="init(event)" applicationComplete="listeners(event)" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="300" height="200">
	<mx:Script>
		<![CDATA[
			import mx.controls.Alert;
 
			private function init(event:Event):void
			{
				btnNewWindow.addEventListener(MouseEvent.CLICK, onClick);
			}
 
			private function listeners(event:Event):void
			{
				taText.addEventListener(NewWindow.CUSTOM, onCustom);
			}
 
			private function onCustom(event:Event):void
			{
				Alert.show("CATCHED");				
			}
 
			private function onClick(event:MouseEvent):void
			{
				var newWindow:NewWindow  = new NewWindow();
 	 			newWindow.open();
 	 			newWindow.addEventListener(NewWindow.CUSTOM, onCustom);
			}
		]]>
	</mx:Script>
	<mx:Button x="10" y="10" label="New window" id="btnNewWindow"/>
	<mx:TextArea x="10" y="40" width="220" height="111" id="taText"/>
</mx:WindowedApplication>

NewWindow.mxml
Код AS3:
<?xml version="1.0" encoding="utf-8"?>
<mx:Window xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="400" height="300" creationComplete="init(event)">
	<mx:Script>
		<![CDATA[
			public static const CUSTOM:String = 'custom';
 
private function init(event:Event):void
{
 btnEvent.addEventListener(MouseEvent.CLICK, onClick);
}
 
private function onClick(event:MouseEvent):void
{
  dispatchEvent (new Event(CUSTOM,true));
}
		]]>
	</mx:Script>
	<mx:Button x="95" y="106" label="Button" id="btnEvent"/>
</mx:Window>
__________________
4am is time to rock

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

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

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


 


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


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