![]() |
Ожидание выполнение слушателя
Доброго дня, и снова нубский вопрос:
Нужно остановить выполнение функции и ожидать нажатие на мувик. Как реализовать? Перепробовал это: Код AS3:
Код AS3:
|
Разбить функцию, которая должна "останавливаться" на две. И не использовать while в такой ситуации.
|
окау
Цитата:
|
Что то я вопроса совсем не понял. Остановить выполнение функции? return. Ожидать нажатия на кнопку? addEventListener
|
Цитата:
Ожидать нажатия на "мувик" - addEventListener(MouseEvent.CLICK, ...) Опишите задачу конкретнее, догадываться что вы там пытаетесь сделать мало кто захочет. Опередили :) |
В ас3 нельзя использовать цикл while для ожидания чего-либо. Вся программа зависнет в ожидании выполнения самого цикла, так как все работает в одном потоке, а после истечения времени выполнения просто отвалится.
|
Функция должна
-Создать объекты на спрайте (решено) -остановиться - здесь пользователь двигает объекты (решено) -продолжить выполнение после нажатия на один мувик (условно крестик). (мувик есть, но пока не работает) - после этого она должна получить данные от объектов и передать их дальше (решено) |
Цитата:
|
Код AS3:
|
А как с помощью
Код AS3:
Добавлено через 35 секунд Цитата:
|
Guitariz, "кривовато" ваше решение, если очень деликатно говорить :)
|
Цитата:
Скажем, в консольных приложениях можно остановить работу программы в ожидании действий пользователя. В интерфейсном приложении так не получится. Кроме основного кода, есть множество других функций. Например, если вы занимаетесь распаковкой архива, то это задача может затребовать десятки секунд и линейное выполнение кода просто приведет к тому, что не будет отрабатываться события отмены архивации, закрытие приложения и тп. Поэтому там распаковка выводится в отдельный поток, а основной продолжает заниматься обработкой событий. В AS3 нет многопотоковости (хотя плеере 11.4 появился Worker). Более того, вы не забывайте, что это флеш и его начальное предназначение - анимация, то есть есть последовательное проигрывание кадров. А каждый кадр состоит из следующих частей: 1. Идет рассылка событий типа клика мыши или нажатия клавиши 2. Идет рассылка события Event.ENTER_FRAME 3. Идет рассылка события Event.EXIT_FRAME 4. Идет рассылка события загрузки, типа Event.INIT, Event.OPEN, Event.COMPLETE и тп. 5. Идет рассылка события Event.RENDER 6. Плеер выводит графику (рендеринг). И пока любая из этих частей не выполнится, следующая не запустится. Визуально программа просто встанет. Не будет ни анимации, ни реакции на клаву или мышь. Поэтому вы подписываетесь на событие и ждете, когда оно сработает. А в это время программа продолжает выполнять свои задачи. |
Это не кривовато. Это событийная система. Это не бейсик, где ручками нужно создавать основной игровой цикл, в котором ожидать нажатия кнопок, мышки и т.д. Тут основной цикл, в котором работает флешка существует независимо от вас, вы, наоборот, вклиниваете свои события и дейсвия в него.
|
Всем спасибо, решил задачку :)
|
| Часовой пояс GMT +4, время: 08:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.