Почему две анимации происходят одновременно...
- Я надеюсь, что смогу лучше понять эту тему, она
никогда не была мне ясна, когда я пытался использовать ее в коде.
все еще пытаюсь полностью понять, как «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