Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 27.06.2016, 21:50
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 1  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
The bomb! Ожидание удовлетворительного пользовательского ввода

Здравствуйте.
Я реализую алгоритм по следующей схеме:

Код AS3:
while (Некоторое условие)
{
   делать то-то;
   ждать нажатия клавиши с цифрой, для которой будут выполнены условия;
   делать се-то;
}
Условия для клавиши связаны со значениями переменных в коде.

Я немного запутался. Как бы вы посоветовали мне это правильно реализовать?

Старый 27.06.2016, 22:08
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 2  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Такие конструкции в AS3 не используются, а если и используются, то только с большущими костылями.
Если вам принципиальна конструкция, предлагаю написать 2-3 метода, которые организуют то, что вам нужно, вызывая друг друга циклически.
Мне кажется, или те, кто были новичками 2 года назад в AS3, стали задавать ещё более странные вопросы?

Развёрнутый ответ:
События в AS3 используют асинхронный режим. Та конструкция, которую привели вы используется только в языках, где события синхронны, и ждут события прежде, чем выполнять дальнейший код. В AS3 вы подписываетесь на событие, и код продолжает выполняться. При этом он выполняется параллельно с вызываемыми коллбеками.
__________________
There is no thing in this world that is not simple.


Последний раз редактировалось ZackMercury; 27.06.2016 в 22:23.
Старый 27.06.2016, 22:51
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 3  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Такие конструкции в AS3 не используются, а если и используются, то только с большущими костылями.
Если вам принципиальна конструкция, предлагаю написать 2-3 метода, которые организуют то, что вам нужно, вызывая друг друга циклически.
Мне кажется, или те, кто были новичками 2 года назад в AS3, стали задавать ещё более странные вопросы?

Развёрнутый ответ:
События в AS3 используют асинхронный режим. Та конструкция, которую привели вы используется только в языках, где события синхронны, и ждут события прежде, чем выполнять дальнейший код. В AS3 вы подписываетесь на событие, и код продолжает выполняться. При этом он выполняется параллельно с вызываемыми коллбеками.
Да, в этом и была проблема. Я, вероятно, неправильно выразился: мне абсолютно не важен этот алгоритм и я написал этот пост именно чтобы мне предложили адекватную альтернативу. Я уже пытался реализовать это через методы, вызывающие друг друга циклические, но, как сказал, запутался. Пожалуйста, напишите мне, как правильно реализовать такую конструкцию.

P. S. Все еще хуже, чем вы думаете. AS3 я стал изучать незадолго до выхода Creative Studio 6, т. е. где-то 3 с половиной года назад). Но Колина Мука я все же читал и об асинхронности событий в AS3 знаю

Старый 27.06.2016, 22:53
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 4  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Такую конструкцию лучше приберечь для языков с синхронными ивентами, в AS3 им не место, не нужно её реализовывать.
Есть конкретная задача, с которой AS3 справляется легко, а есть надуманные конструкции, которые якобы кажутся понятными, с которыми AS3 не дружит.
__________________
There is no thing in this world that is not simple.

Старый 27.06.2016, 22:58
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 5  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Такую конструкцию лучше приберечь для языков с синхронными ивентами, в AS3 им не место, не нужно её реализовывать.
Есть конкретная задача, с которой AS3 справляется легко, а есть надуманные конструкции, которые якобы кажутся понятными, с которыми AS3 не дружит.
Я имел в виду решение приведенной задачи с помощью допустимой конструкции заместо моей, как вы говорите, надуманной. Приведите мне хотя бы макет

Старый 27.06.2016, 22:59
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 6  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Дайте конкретную задачу. Что, например?
__________________
There is no thing in this world that is not simple.

Старый 27.06.2016, 23:07
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 7  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Дайте конкретную задачу. Что, например?
Пошаговая игра. Боты-противники применяют свои способности, затем ждем игрока, от которого требуется ввести номер одной из десяти своих способностей. При этом, если соответствующая способность будет на перезарядке, или, скажем, на нее будет нехватать маны, мы все так же ждем валидного ввода. Затем боты-напарники применяют свои способности и все начинается по новой. Продолжаем этот цикл пока суммарное здоровье хотя бы одной из команд не опустится до 0.

Старый 27.06.2016, 23:11
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 8  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Для этого используются состояния. Но, так как в AS3 нет enum, обычно они перечисляются в целочисленных константах и берут значения 0~∞.
Каждый кадр происходит switch по текущему состоянию, и в зависимости от него выполняются конкретные действия.
После ввода игрока, вы переключаете состояние, и продолжаете всё, что надо, затем переключаете состояние снова.

Код AS3:
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.

Старый 27.06.2016, 23:17
Wormhole вне форума Посмотреть профиль Отправить личное сообщение для Wormhole Найти все сообщения от Wormhole
  № 9  
Ответить с цитированием
Wormhole
 
Аватар для Wormhole

Регистрация: Jun 2014
Адрес: Санкт-Петербург
Сообщений: 185
Цитата:
Сообщение от ZackMercury Посмотреть сообщение
Каждый кадр происходит switch по текущему состоянию, и в зависимости от него выполняются конкретные действия
Не очень понял, я во FlashDevelop работаю.
И что есть состояния?

Старый 27.06.2016, 23:21
ZackMercury вне форума Посмотреть профиль Отправить личное сообщение для ZackMercury Найти все сообщения от ZackMercury
  № 10  
Ответить с цитированием
ZackMercury
 
Аватар для ZackMercury

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
Цитата:
И что есть состояния?
Парадигма. Я столкнулся с ней, когда пытался программировать искусственный интеллект.
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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