|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
|
Ожидание удовлетворительного пользовательского ввода
Здравствуйте.
Я реализую алгоритм по следующей схеме: while (Некоторое условие) { делать то-то; ждать нажатия клавиши с цифрой, для которой будут выполнены условия; делать се-то; } Я немного запутался. Как бы вы посоветовали мне это правильно реализовать? |
|
|||||
Такие конструкции в AS3 не используются, а если и используются, то только с большущими костылями.
Если вам принципиальна конструкция, предлагаю написать 2-3 метода, которые организуют то, что вам нужно, вызывая друг друга циклически. Мне кажется, или те, кто были новичками 2 года назад в AS3, стали задавать ещё более странные вопросы? Развёрнутый ответ: События в AS3 используют асинхронный режим. Та конструкция, которую привели вы используется только в языках, где события синхронны, и ждут события прежде, чем выполнять дальнейший код. В AS3 вы подписываетесь на событие, и код продолжает выполняться. При этом он выполняется параллельно с вызываемыми коллбеками.
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 27.06.2016 в 22:23. |
|
|||||
Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
|
Цитата:
P. S. Все еще хуже, чем вы думаете. AS3 я стал изучать незадолго до выхода Creative Studio 6, т. е. где-то 3 с половиной года назад). Но Колина Мука я все же читал и об асинхронности событий в AS3 знаю |
|
|||||
Такую конструкцию лучше приберечь для языков с синхронными ивентами, в AS3 им не место, не нужно её реализовывать.
Есть конкретная задача, с которой AS3 справляется легко, а есть надуманные конструкции, которые якобы кажутся понятными, с которыми AS3 не дружит.
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
|
Я имел в виду решение приведенной задачи с помощью допустимой конструкции заместо моей, как вы говорите, надуманной. Приведите мне хотя бы макет
|
|
|||||
Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
|
Пошаговая игра. Боты-противники применяют свои способности, затем ждем игрока, от которого требуется ввести номер одной из десяти своих способностей. При этом, если соответствующая способность будет на перезарядке, или, скажем, на нее будет нехватать маны, мы все так же ждем валидного ввода. Затем боты-напарники применяют свои способности и все начинается по новой. Продолжаем этот цикл пока суммарное здоровье хотя бы одной из команд не опустится до 0.
|
|
|||||
Для этого используются состояния. Но, так как в AS3 нет enum, обычно они перечисляются в целочисленных константах и берут значения 0~∞.
Каждый кадр происходит switch по текущему состоянию, и в зависимости от него выполняются конкретные действия. После ввода игрока, вы переключаете состояние, и продолжаете всё, что надо, затем переключаете состояние снова. const STATE_RUNNING:int = 0; const STATE_STOPPED:int = 1; var state:int = STATE_RUNNING; function onEnterFrame(e:Event = null):void { switch(state) { case STATE_RUNNING: //тут происходит игра, когда нужно ввести что-то, state = STATE_STOPPED; break; case STATE_STOPPED: //тут происходит ввод, ничего не делаем, пока пользователь не нажмёт Enter, по нему state = STATE_RUNNING; break; } }
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
|
Цитата:
И что есть состояния? |
|
|||||
Цитата:
https://ru.wikipedia.org/wiki/%D0%90...BD%D0%B8%D0%B5
__________________
There is no thing in this world that is not simple. |
Часовой пояс GMT +4, время: 23:40. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|