Я много программировал на C # как с Winforms, так и с WPF. Сейчас я работаю над приложением Flex / Air для кроссплатформенной поддержки. Но это мой первый гибкий проект, поэтому учусь по ходу дела.
У меня есть всплывающее окно, в котором пользователь заполняет форму, а затем нажимает ОК или ОТМЕНА. Я настроил его так же, как и в C #, но он не работает, и я не вижу способа заставить его делать то, что я хочу.
РЕДАКТИРОВАТЬ: Итак, я сейчас пробую события, события, похоже, просто не обрабатываются ...
ИЗМЕНИТЬ снова: О, это потому, что диспетчер всплывающих окон, кажется, создает новый экземпляр объекта Form, а не использует тот, который я уже создал.
поэтому в методе showWindow я вставил этот код, а не диспетчер всплывающих окон:
parent.addChild(this);
потом снимаю, когда закрываю. Единственная проблема в том, что он не отключает остальную часть родителя, как это делает диспетчер всплывающих окон. Есть предложения по этому поводу?
РОДИТЕЛЬ:
private function btnAdd_Clicked():void
{
var form:Form = new Form();
form.addEventListener(CloseEvent.CLOSE, onFormClosed, false, 0, true);
recipeForm.showWindow(this);
}
private function onFormClosed(e:CloseEvent):void
{
//none of these Alerts are ever shown. I also tried breakpoints in debug to try an follow the code, with no luck
Alert.show("Closed");
if(e.detail == Alert.OK)
{
Alert.show("OK");
}
else if(e.detail == Alert.CANCEL)
{
Alert.show("Cancel");
}
}
РЕБЕНОК:
private function btnCancel_Clicked():void
{
okClicked = false;
closeWindow();
}
public function closeWindow():void
{
var e:CloseEvent = new CloseEvent(CloseEvent.CLOSE);
e.detail = okClicked ? Alert.OK : Alert.CANCEL;
dispatchEvent(e);
PopUpManager.removePopUp(this);
}
public function showWindow(parent:WindowedApplication):void
{
var window:IFlexDisplayObject = PopUpManager.createPopUp(parent, RecipeForm, true);
PopUpManager.centerPopUp(window);
}