Показать сообщение отдельно
Старый 20.05.2013, 22:54
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
при одновременном нажатии двух клавиш, например вверх, потом не отпуская влево, персонаж поворачивается влево и продолжает в таком положении двигаться вверх.
А Вы бы как хотели?
У Вас при поступлении события от клавиатуры разбирается, какая клавиша была нажата. Но при этом условия if() вложены через else (видимо, авторы туториалов считают, что переменная может хранить сразу несколько значений ). Затем каждый кадр (по событию ENTER_FRAME) происходит перемещение персонажа в зависимости от флагов влево, вправо и т.д. То есть, хотелось бы чтобы от флагОВ, но на самом деле — от флагА, поскольку if'ы снова вложены через else, то есть, если персонаж идет вверх, он уже никак не может идти влево. Кроме того, если клавишу вверх не отпустили, он вообще никуда больше идти не будет, потому что остальные варианты рассматриваются только в else ("иначе", то есть только если вверх не идем). Если хотите, чтобы перс двигался и по диагонали, уберите else. Если хотите, чтобы перс просто был повернут в ту же сторону из 4-х, в которую двигается — поворачивайте его там же, где меняете координату. Потому что сейчас происходит так: приходит одно событие от клавиатуры, затем второе — и все это на протяжении одного кадра, то есть отрисовано будет только последнее изменение состояния.
Вобщем, сначала Вам надо определиться, чего Вы ждете при нажатии двух направлений одновременно.
__________________
Reality.getBounds(this);