![]() |
как быть с подобной логикой?
исполняется некий код. на определенном этапе надо получить данные ввода со стороны пользователя(скажем, он должен нажать кропку)
....... некий код .............. ждем пока пользователь даст ответ! ............ продолжение Но! нет ведь способа остановить код пока не будет ответа. более того, когда он будет сработает УЖЕ СОВСЕМ ДРУГАЯ ФУНКЦИЯ - обработчкик события этой кнопки. В итоге - совсем не понимаю - как на AS3 вменяемо не теряя логики ООП - исполнять код который подразумевает интерактивности |
А вам ответа в этой теме было не достаточно?
http://www.flasher.ru/forum/showthread.php?t=165951 Код можно вообще не исполнять, пока не произойдет какое-то событие. |
эта тема ПО ДРУГОМУ вопросу, не путайте! я здесь как раз написал - логика событий ясна. нельзя ли как то выполнить логику как в примере?
|
По-другому никак, только костылями. АС3 не умеет останавливаться и дожидаться какого-то действия
|
хм тогда вот такой вопрос. уже не связанный ни с каким синтаксисом.
философия ООП - написать класс который, как черный ящик выполнит ВСЕ действия. и вот, к примеру - я запустил метод(функцию) класса который реализует часть игры. И тогда, любая необходимость ждать ответа пользователя делает НЕВОЗМОЖНЫМ работу этого класса как самодостаточной части - потому что событие внутри класса не может возвращася к исполнению главного кода подобно подпрограмме. оно исполнилось и -все. и получается любое действие пользователя будет прерывать неизбежно главный код с концами(? |
Во флеше один поток. Ассинхронно работают только лоадеры на текущий момент.
То, что Вы хотите сделать, решается простой опорой на событийную модель. Советую прочитать, как работает AVM2. |
а не подскажете ли в двух словах - логику событийной модели? то есть самую суть, код никакой разумеется не нужен...
|
Что-то делаем и доходим до какого-то момента, когда нужно ждать чего-то. Это что-то может наступить невесть когда, но если наступит, то код должен выполниться дальше. Мы разбиваем один метод на два, между которыми подписываемся на событие, по которому запускаем второй метод (это уже хендлер будет).
Теперь на примере: на экран раз в 100 миллисекунд выводятся по буквам какие-то слова (эффект консоли, который любят делать в фильмах). Он доходит до какой-то точки, когда должен остановиться и ждать ввода пользователя (просто энтер, например). Мы подписываемся на событие клавиатуры по началу ожидания. Когда получаем "энтер", выполняем эффект дальше. В коде это будет выглядеть как вызов второго метода с продолжением эффекта (и отпиской от события клавиатуры). |
я понял. спасибо. так и предполагал. но это - жутко неудобно имхо.
|
Чего неудобного-то?
|
| Часовой пояс GMT +4, время: 04:35. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.