Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   как быть с подобной логикой? (http://www.flasher.ru/forum/showthread.php?t=165966)

Atarion 28.08.2011 21:49

как быть с подобной логикой?
 
исполняется некий код. на определенном этапе надо получить данные ввода со стороны пользователя(скажем, он должен нажать кропку)

.......
некий код
..............
ждем пока пользователь даст ответ!
............
продолжение

Но! нет ведь способа остановить код пока не будет ответа. более того, когда он будет сработает УЖЕ СОВСЕМ ДРУГАЯ ФУНКЦИЯ - обработчкик события этой кнопки.

В итоге - совсем не понимаю - как на AS3 вменяемо не теряя логики ООП - исполнять код который подразумевает интерактивности

goodguy 28.08.2011 21:54

А вам ответа в этой теме было не достаточно?
http://www.flasher.ru/forum/showthread.php?t=165951

Код можно вообще не исполнять, пока не произойдет какое-то событие.

Atarion 28.08.2011 22:17

эта тема ПО ДРУГОМУ вопросу, не путайте! я здесь как раз написал - логика событий ясна. нельзя ли как то выполнить логику как в примере?

goodguy 28.08.2011 22:24

По-другому никак, только костылями. АС3 не умеет останавливаться и дожидаться какого-то действия

Atarion 28.08.2011 22:28

хм тогда вот такой вопрос. уже не связанный ни с каким синтаксисом.
философия ООП - написать класс который, как черный ящик выполнит ВСЕ действия.
и вот, к примеру - я запустил метод(функцию) класса который реализует часть игры. И тогда, любая необходимость ждать ответа пользователя делает НЕВОЗМОЖНЫМ работу этого класса как самодостаточной части - потому что событие внутри класса не может возвращася к исполнению главного кода подобно подпрограмме. оно исполнилось и -все. и получается любое действие пользователя будет прерывать неизбежно главный код с концами(?

КорДум 28.08.2011 22:32

Во флеше один поток. Ассинхронно работают только лоадеры на текущий момент.
То, что Вы хотите сделать, решается простой опорой на событийную модель.
Советую прочитать, как работает AVM2.

Atarion 28.08.2011 22:38

а не подскажете ли в двух словах - логику событийной модели? то есть самую суть, код никакой разумеется не нужен...

КорДум 28.08.2011 22:51

Что-то делаем и доходим до какого-то момента, когда нужно ждать чего-то. Это что-то может наступить невесть когда, но если наступит, то код должен выполниться дальше. Мы разбиваем один метод на два, между которыми подписываемся на событие, по которому запускаем второй метод (это уже хендлер будет).

Теперь на примере: на экран раз в 100 миллисекунд выводятся по буквам какие-то слова (эффект консоли, который любят делать в фильмах). Он доходит до какой-то точки, когда должен остановиться и ждать ввода пользователя (просто энтер, например). Мы подписываемся на событие клавиатуры по началу ожидания. Когда получаем "энтер", выполняем эффект дальше. В коде это будет выглядеть как вызов второго метода с продолжением эффекта (и отпиской от события клавиатуры).

Atarion 28.08.2011 23:12

я понял. спасибо. так и предполагал. но это - жутко неудобно имхо.

Silicium 28.08.2011 23:36

Чего неудобного-то?


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

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