![]() |
|
||||||||||
|
|||||
|
[+4 03.04.09]
Регистрация: May 2007
Сообщений: 21
|
Такой вопрос. Есть 2 mxml: главный и окошко.
Main ... 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(); } ... ... 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)); } ... И попутно вопрос, при компиляции вылазит ошибка :1136: Неправильное количество аргументов. Ожидается 1. Location: line 26 (там просто открывающая скобка...см. в коде). Что это может быть? Последний раз редактировалось KaeL; 07.01.2009 в 15:10. |
|
|||||
|
ветеран форума
|
У каждого окна свой stage и displaylist, а событие выше stage не всплывает.
Описанная ошибка (1136) может быть вызвана тем, что где-то в mxml Вы написали click="onClick" . Если нет - покажите остальной код, так как по приведенным фрагментам причина неясна.
__________________
4am is time to rock |
|
|||||
|
[+4 03.04.09]
Регистрация: May 2007
Сообщений: 21
|
Собственно кода-то всего ничего, т.к тестил.
<?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> <?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> Не могли бы вы подсказать, как тогда быть? Что использовать вместо событий? Задумывалось следующее: По нажатию кнопки вызывать окошко, заполнить его данными и при закрытии занести эти данные в DataGrid. |
|
|||||
|
ветеран форума
|
Вносим эти исправления:
1) 2) var newWindow:NewWindow = new NewWindow(); newWindow.open(); newWindow.addEventListener(NewWindow.CUSTOM, onCustom); Логика всплывания событий такова, что событие идет вверх до сцены. А Вы пытались поймать его на текстовом поле в другой сцене, куда оно никогда не дойдет. Почитайте про событийную модель в AS3, все станет понятно.
__________________
4am is time to rock Последний раз редактировалось DarkLight; 07.01.2009 в 16:24. |
|
|||||
|
[+4 03.04.09]
Регистрация: May 2007
Сообщений: 21
|
Огромное спасибо!
з.ы А та ошибочка так и продолжает мозолить глаз ![]() |
|
|||||
|
ветеран форума
|
Вот код, на котором проверял работоспособность. Ошибка эта у меня не возникает. Разница только в том, что я trace заменил на Alert.show для удобства
Основное приложение: <?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 <?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, время: 09:06. |
|
|
« Предыдущая тема | Следующая тема » |
|
|