Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Рабочее окно в стиле Виндовс с кнопками Да, Нет, Отмена (http://www.flasher.ru/forum/showthread.php?t=86896)

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

Цитата:

Сообщение от GFreemen
А во-вторых onPress ничего не передает предложением return

А я ничего про return не говорил.

sinya 25.10.2006 14:24

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

GFreemen 25.10.2006 15:39

2 __etc
Большое спасибо за разъяснения. Буду думать.


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

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