PDA

Просмотр полной версии : Рабочее окно в стиле Виндовс с кнопками Да, Нет, Отмена


GFreemen
25.10.2006, 06:10
Помогите создать Рабочее окно с тремя кнопками ДА, НЕТ, ОТМЕНА
Мой код: НЕ РАБОТАЕТ. Дело в том, что Flash завершает работу функции сразу же. Т.Е. выдает undefined, вместо того чтобы при нажатии выдавать yes, no || Cencel.
//функция выводa на экран сообщения об ошибке----------------------------------------------------------
function allert2 (text_vivoda:String):String {
_root.attachMovie ("window_allert2", "window_allert2", 15000 - 1, {_x:500, _y:370});
//добавление клипа ALLERT2
window_allert2.allert2_text_var = text_vivoda;
//текст в окне
var a:String;
window_allert2.window_allert_yes.onPress = function ():Void {
a = "yes";
window_allert2.removeMovieClip ();
};
window_allert2.window_allert_no.onPress = function () {
a = "no";
window_allert2.removeMovieClip ();
};
window_allert2.window_allert_cancel.onPress = function () {
a = "cancel";
window_allert2.removeMovieClip ();
};
while (a != undefined) {
return a;
}
}

iNils
25.10.2006, 08:43
"a" должна выдаваться при событии onPress, а не во время выполнения функции allert2

etc
25.10.2006, 11:01
Остановить выполнение циклом while нельзя. Т.е. нельзя сделать if (alert) …
Нужно вызывать какую-либо функцию после нажатия одной из кнопок…

GFreemen
25.10.2006, 13:09
2 iNils
Во-первых у меня в самой функции allert2 должно быть предложение return, а то не работает. А во-вторых onPress ничего не передает предложением return

2 __etc "Остановить выполнение циклом while нельзя."
Вот я и не могу понять почему нельзя.

GFreemen
25.10.2006, 13:20
2 __etc
т.е. почему function не зацикливается до тех пор пока при onPress не произойдет изменение а, а СРАЗУ ЖЕ выдает результат undefined?

etc
25.10.2006, 13:27
Потому что while — это цикл, причём бесконечный по факту и Flash Player будет его выполнять до тех пор, пока не выдаст ошибку (при этом никаких действий пользователь сделать не может). За время выполнения цикла никаких других действий выполнить нельзя.
Более того, ты объявил переменную, она равна undefined. Выражение a != undefined ложно, поэтому цикл не выполняется и не происходит return.

Нужно делать иначе — показывать окно, подписываться на события окна, блокировать контент и ждать реакции пользователя. Когда он нажмёт на кнопку, будет послано событие (определённого типа, в зависимости от выбранной кнопки) и все слушатели этих событий отреагируют соответствующим образом (скрытие окна и выполнение каких-либо дальнейших действий).

iNils
25.10.2006, 13:43
А во-вторых onPress ничего не передает предложением return
А я ничего про return не говорил.

sinya
25.10.2006, 14:24
А как насчет использовать компонент Alert ? Типа
Alert.show("ваше сообщение", "заголовок окна", Alert.OK | Alert.CANCEL, и т.д.)

GFreemen
25.10.2006, 15:39
2 __etc
Большое спасибо за разъяснения. Буду думать.