Вниз  KEmulator, модификация интерфейса.
- 12.07.2019 / 13:18copy  #512128
sasa961
  Пользователь

sasa961 
Сейчас: Offline
Проверил на других эмуляторах: есть результат.
1) да, игра реализована так, что герой поднимается с положения сидя после первого выстрела и так же когда прыгаешь, он прекращает прыгать после выстрелов. Тут это реализовано на уровне классов, надо редактировать игру.
2) в KEmulator-e таки есть ошибка, после смены нажатия кнопки, какой то флаг не дает их использовать снова. Без дебаггера этот флаг придется искать долго.
- 12.07.2019 / 14:36copy  #512129
sasa961
  Пользователь

sasa961 
Сейчас: Offline
Ошибку понял: между адаптером и вводом в программу есть неподнятый один флаг.
Признак:
1) Нажимаю и держу кнопку вверх(2), происходит событие прыжка, оно зациклено.
2) Не отпуская кнопку вверх(2), нажимаю огонь(5), персонаж производит выстрелы в прыжке.
3) Игра сбрасывает функцию прыжка, персонаж приземляется на землю. Я отпускаю кнопку огня(5). Персонаж стоит и ничего не делает, хоть до сих пор нажата кнопка прыжка(2).
4) Отпускаю кнопку прыжка(2), персонаж ничего не делает.
5) Снова нажимаю на кнопку прыжка(2), персонаж ничего не делает.
6) Отпускаю кнопку, персонаж ничего не делает.
7) Снова нажимаю на кнопку прыжка(2), персонаж снова переход в событие прыжка.

Пока писал, понял, что скорее всего флаг поднимается после события keyReleased(), а из-за того, что я не отпустил кнопку и нажал на другую, событие не происходит и флаг не меняет значение. Ошибка допущена на на первичном уровне, так как переменная отвечающая за текущую клавишу не меняет значение, а значит, какой то true||false не дает выполнить событие.

При чем это касается кнопки Огонь(5) или центр Джойстика. По крайней мере, такого поведения из-за кнопок направления я не заметил. Пока еще проверяю код.

UPD:: так же заметил в консоли Клавиш, что когда нажимаются все кнопки направлений, то активируется лишь одна кнопка, а когда на огонь, то почему то две. Пока ищу это событие.

UPD:: Нет, таки это все касается всех кнопок. При направлениях происходит так само.

Изменено sasa961 (12.07 / 14:47) (всего 2 раза)
- 12.07.2019 / 15:17copy  #512131
sasa961
  Пользователь

sasa961 
Сейчас: Offline
Нашел о чем говорил, по поведению и по сигнатуре это должно быть оно.
  1. org.eclipse.swt.widgets.Event.class
тут обьявлена переменная
  1. public boolean doit = true;
тут же рядом есть ее поведение
  1. ...
  2.    break;
  3.       case 2:
  4.         keyEvent = new KeyEvent(paramEvent);
  5.         ((KeyListener)this.eventListener).keyReleased(keyEvent);
  6.         paramEvent.doit = keyEvent.doit;
  7.         break;
  8.       case 24:
  9. ...

Как мы видим, переменная изменяется, только после события keyReleased().

Ну...хоть я и нашел это, но пока не знаю, что с этим делать.

Есть идеи? Подскажите, буду двигать дальше.
- 12.07.2019 / 16:35copy  #512132
sasa961
  Пользователь

sasa961 
Сейчас: Offline
Увы, без правильного Debug-ера, я не отковыряю этот момент.
- 12.07.2019 / 16:40copy  #512133
HoldFast
  Пользователь

HoldFast 
Сейчас: Offline
Сиди да ковыряй, чо по каждому пуку мессаги строчить
__________________
 Да, детка, я - Король Ящериц!!!
- 12.07.2019 / 18:12copy  #512138
vl@volk
  Пользователь

vl@volk 
Сейчас: Offline
HoldFast, пусть, складно пишет, читать интересно
__________________
 знает толк
- 12.07.2019 / 19:20copy  #512142
sasa961
  Пользователь

sasa961 
Сейчас: Offline
vl@volk, был бы сорс, не пришлось бы заходить кто знает с какой стороны и заниматься камасутрой) тут даже шаман с бубном сам не справится.
- 12.07.2019 / 20:21copy  #512144
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
sasa961, не думаю, что в org.eclipse.swt.widgets вообще стоит лезть. Ещё раз повторюсь, SWT это библиотека, по ней есть документация, исходный код открытый.
Вот этот boolean doit, а вот тот самый код, где он изменяется, узнаёте?
__________________
 let live
Наверх  Всего сообщений: 38
Фильтровать сообщения
Поиск по теме
Файлы топика (17)
Поиск по форуму