PDA

Просмотр полной версии : Проблема с диалогами во flex


volfgang_samurai
25.09.2008, 16:28
Необходимо создать дочернее диалоговое окно, при этом процесс на родительском должен остановиться и ждать закрытия дочернего!

как показывает пример
...
Alert.show("СТОП!!!");
trace("должен ждать запрития окна");
...

надпись "должен ждать запрития окна" появится сразу после появления окна с сообщением "СТОП!!!" и не будет дожидаться его закрытия.
PopUpManager работает аналогично.

Подскажите пожалуйста красивое решение данной проблемы.

ex.image
25.09.2008, 16:35
var popUp:IFlexDisplayObject = PopUpManager.createPopUp(....
popUp.addEventListener(Event.CLOSE, closeHandler)

JesterAntik
26.09.2008, 18:21
при использовании попап менеджера второй или третий параметр отвечает за то что бы отключить работу основного приложения.

7thsky™
27.09.2008, 01:56
Ну отключить работу приложения не возможно таким образом. Модальность во флэше это всего лишь спрайт под окном, которыйы глушит все маус евенты и все.

JesterAntik
29.09.2008, 21:05
возможно, настолько детально не изучал такую возможность

Bruiser
30.09.2008, 11:42
Можно так
main.mxml

public function function1():void{
var md:popup = new popup;
PopUpManager.addPopUp(md,this,true);
PopUpManager.centerPopUp(md);
md.init(function2);
}

public function function2():void{
trace("должен ждать запрития окна");
}

popup.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="700" height="90">
<mx:Script>
<![CDATA[
var func:Function;

private function init(func:Function):void{
this.func = func;
}
private function close():void{
func.call(this);
}
]]>
</mx:Script>
<mx:Button label="Закрыть" click="close()"/>
</mx:TitleWindow>
Смысл в том, что при создании модального окна ему передается функция, которая должна будет вызвана
md.init(function2);
А в самом модальном окне сначала эта функция сохраняется при инициализации
private function init(func:Function):void{
this.func = func;
}
А затем вызывается

private function makeRequest():void{
func.call(this);
}

volfgang_samurai
03.10.2008, 13:14
Всем спасибо, помогли!