Запускайте код асинхронно, позволяя каждому фрагменту кода завершиться до начала следующего [закрыто]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Запускайте код асинхронно, позволяя каждому фрагменту кода завершиться до начала следующего [закрыто]

Сообщение Anonymous »

Спасибо... сообществу. Вот ОТВЕТ на мой вопрос:
Почему две анимации происходят одновременно...
  • Я надеюсь, что смогу лучше понять эту тему, она
    никогда не была мне ясна, когда я пытался использовать ее в коде.
Вот парная версия моего кода, которая «РАБОТАЕТ». Я
все еще пытаюсь полностью понять, как «async-await» контролирует
поток данных. Очевидно, здесь многого не хватает, но
уберите «async» и «await», и вот что я увидел.
ОШИБКА: (Настольная игра Digital Извините).
Сценарий здесь таков: когда игрок движется таким образом, что
приземляется на занятое противником пространство, игрок противника
отправляется обратно в свою СТАРТ-позицию.
/>
  • Ошибка: И движущийся игрок, и противник, отправляемый
    обратно на СТАРТ, «анимируются» (одновременно), - В другомсловами, противник, кажется, возвращается к своему СТАРТу прежде, чем
    игрок переместит количество мест на карте.

    Код: Выделить всё

      public async void ProcessStandardNumbersAsync(int cardNumber)
    {
    moveValue = Math.Abs(GetCardMoveValue(cardNumber));
    optList = BuildChoiceListWithAllPlayersMen(playerNo, moveValue);
    ChoiceStringList = BuildNewChoiceStringList(optList);
    if (ChoiceStringList.Count > 0)
    {
    PlayerDecision(ChoiceStringList.Count);
    
    SlideToProcess = (optList[ChoiceId].Nav.Count > moveValue);
    await MovePlayerWherever(optList[ChoiceId].Nav, optList[ChoiceId].ManId);
    await UpdateNewLocation(optList, ChoiceId);
    if (SlideToProcess)
    {
    nThElement = GetTheNthElementOfTheNavList(optList[ChoiceId].Nav, moveValue);
    await ProcessPerimeterSlide(nThElement, optList[ChoiceId].ManId);
    }
    }
    }
    
----- Информация о коде -----
  • cardNumber – вытянутая карта, а не конкретное число для перемещения.
  • moveValue – количество мест, на которые игрок может переместить
  • optList — список возможных допустимых ходов.
  • optList[ChoiceId].Nav — путь навигации, выбранный для анимации.
  • SlideToProcess — логическое значение. общедоступная собственность
----- Важные методы -----
  • BuildChoiceList... — создает действительный список ходов.
  • PlayerDecision — диалоговое окно, позволяющее «человечным» игрокам сделать выбор.
  • MovePlayerWherever — код, который на самом деле перемещает изображения игрока на холсте.
  • UpdateNewLocation — обновляет конечные координаты человека игрока.
  • ProcessPerimeterSlide — в случае наличия СЛАЙДА обновляет и перемещает противника. НАЧАТЬ


Подробнее здесь: https://stackoverflow.com/questions/790 ... he-next-st
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»