Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Как открыть окошко? (http://www.flasher.ru/forum/showthread.php?t=134608)

micromacro 06.01.2010 00:37

Как открыть окошко?
 
Я пишу в акшен скрипт создание пользовательского интерфейса. И Мне нужно по нажатии кнопки открыть панель так, чтобы она стала активной и пока её не закроешь всё остальное не работает.

вот у меня строиться пользовательский интерфейс по платежам мне нужно при нажатии кнопки добавить вызвать панель в которой юзер введёт параметры платежа.

Код AS3:

private static function buildPaymentsTab(n:Number):Canvas{
 
                        var add : Button = new Button();
                        add.x=200; add.y=200;
 
                        add.addEventListener(MouseEvent.CLICK, addHandler);
 
                        function addHandler(eventObj:MouseEvent):void {
                              ЗДЕСЬ ХОЧУ СОЗДАТЬ ОКОШКО
                                buildNewPayment();
                        }
 
                        tab.addChild(add);
 
 
                        return tab;               
                }


Кип 06.01.2010 02:00

Для начала, создайте новый mxml-компонент для своего окошка, выбрав базовым классом, например, titleWindow.
Для создания окошка, используйте PopUpManager.createPopUp()

Например так:
Код AS3:

var clientsPopup:clientsTitleWindow;
clientsPopup = clientsTitleWindow(PopUpManager.createPopUp(this, clientsTitleWindow, true));

Первый аргумент - родительский DisplayObject. Второй - класс создаваемого окошка.
Третий - является ли окошко модальным: значение true будет означать, что объекты, находящиеся под окошком, не будут отвечать на пользовательские действия. Другими словами,
Цитата:

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

GAmoVeR 06.01.2010 08:48

Вопрос из области рядом
Цитата:

Сообщение от micromacro (Сообщение 877010)

Код AS3:

                        add.addEventListener(MouseEvent.CLICK, addHandler);
 
                        function addHandler(eventObj:MouseEvent):void {
                              ЗДЕСЬ ХОЧУ СОЗДАТЬ ОКОШКО
                                buildNewPayment();
                        }


Вот таким образом для динамически созданной кнопки мы создали событие CLICK, по которому вызывается функция addHandler. А как в addHandler передать какие либо пользовательские параметры? Ну например, строчкой выше определился массив - и нужно чтобы функция addHandler этот массив использовала.

HotIceCream 06.01.2010 15:22

сделай их глобальными - объяви в теле класса, а не в какой либо функции

Кип 06.01.2010 15:41

Цитата:

Сообщение от GAmoVeR (Сообщение 877071)
А как в addHandler передать какие либо пользовательские параметры?

Напрямую, к сожалению, нельзя.
Нужно создать свой класс события, наследуемый от класса Event (или MouseEvent для событий мыши), добавить в него нужное свойство, и по клику, диспатчить это событие таким образом:
Код AS3:

myButton.dispatchEvent(new MyCustomEvent(MY_EVENT_TYPE, myArray, ...));

В гугле по запросу *pass multiple arguments addEventListener actionscript3* можно найти довольно много информации
Например, вот:
http://www.darronschall.com/weblog/2...ers-in-as3.cfm

http://www.learningactionscript3.com...s-with-events/
А вот здесь рассказывается про альтернативный вариант, который заключается в использовании в качестве приёмника события анонимной функции, которая выполняет всего одно действие - вызывает реальный обработчик событие.
Код AS3:

add.addEventListener(MouseEvent.CLICK, function(event:MouseEvent):void { addHandler(event, "Клик!") }


GAmoVeR 06.01.2010 17:41

Вот оно как оказывается

Спасибо, учу матчасть дальше


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

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