FireURQ Bugtracker - FireURQ
Просмотр подробностей проблемы
0000160FireURQинтерфейсобщая2011-08-27 15:502012-01-17 21:22
frodo 
fireton 
обычныймалаяне проверялась
закрытповторно открыт 
 
1.3.31.3.3 
0000160: Обработка нажатий на кнопку
Имеем: более одной кнопки и событие, которое происходит после pause.
Если нажать мышкой на вторую, третью и проч. кнопки, а в это время перерисовалась локация, интерпретатор считает, что была нажата первая кнопка.
Ниже - файл, который иллюстрирует суть проблемы. Если выбирать "красный" и "выключить", есть вероятность попасть на "синий".
Нет прикрепленных меток.
? bomb.qst (611) 2011-08-27 15:50
https://bt.fireurq.ru/file_download.php?file_id=22&type=bug
история изменений
2011-08-27 15:50frodoНовый инцидент
2011-08-27 15:50frodoОтветственный => fireton
2011-08-27 15:50frodoФайл добавлен: bomb.qst
2011-08-27 18:41frodoКомментарий добавлен: 0000183
2011-08-28 12:55firetonКомментарий добавлен: 0000184
2011-08-28 12:55firetonСостояниеновый => назначен
2011-08-28 12:57firetonЦелевая версия => 1.4
2011-08-28 13:55firetonКомментарий добавлен: 0000186
2011-08-28 13:55firetonСостояниеназначен => отработан
2011-08-28 13:55firetonРешен в версии => 1.4
2011-08-28 13:55firetonРешениеоткрыт => решен
2011-09-07 22:45firetonРешен в версии1.4 => 1.3.3
2011-09-07 22:45firetonЦелевая версия1.4 => 1.3.3
2011-09-07 22:49firetonСостояниеотработан => закрыт
2012-01-14 16:27frodoКомментарий добавлен: 0000190
2012-01-14 16:27frodoСостояниезакрыт => нужен отклик
2012-01-14 16:27frodoРешениерешен => повторно открыт
2012-01-15 00:16firetonКомментарий добавлен: 0000191
2012-01-15 00:16firetonСостояниенужен отклик => закрыт
2012-01-15 00:16firetonРешениеповторно открыт => решению не подлежит
2012-01-16 22:21frodoКомментарий добавлен: 0000192
2012-01-16 22:21frodoСостояниезакрыт => нужен отклик
2012-01-16 22:21frodoРешениерешению не подлежит => повторно открыт
2012-01-17 21:21firetonКомментарий добавлен: 0000193
2012-01-17 21:21firetonСостояниенужен отклик => рассмотрен
2012-01-17 21:22firetonСостояниерассмотрен => закрыт

Комментарии
(0000183)
frodo   
2011-08-27 18:41   
UPD: Оказалось, с инвентарем те же проблемы. В следующей программе при попытке выбрать второй, третий или четвертый предмет, иногда выбирается первый:

:0
pln Выберите предмет в инвентаре.
:1
pause 200
goto 1
end

:use_inv_Предмет1
pln Вы выбрали предмет 1
end

:use_inv_Предмет2
pln Вы выбрали предмет 2
end

:use_inv_Предмет3
pln Вы выбрали предмет 3
end

:use_inv_Предмет4
pln Вы выбрали предмет 4
end
(0000184)
fireton   
2011-08-28 12:55   
после паузы происходит перерисовка, ты же очищаешь экран и заново создаёшь локацию. естественно, подсветка перескакивает на первую позицию...

В общем, надо поправить.
(0000186)
fireton   
2011-08-28 13:55   
поправил, теперь всё нормально
(0000190)
frodo   
2012-01-14 16:27   
С мышкой проблем не возникает, но если выбирать кнопки/инвентарь при помощи клавиш, указатель по-прежнему прыгает в первую позицию.

Понятно, что не так много игроков пользуются лишь клавиатурой, но для людей с ограниченными возможностями, которые не могут использовать мышь, это вызовет лишние неудобства.
(0000191)
fireton   
2012-01-15 00:16   
Тут такое дело. Когда мы останавливаемся по pause, кнопки пересоздаются. И подсветка автоматом попадает на первую кнопку. И если с мышкой действительно стоило анализировать текущие координаты курсора и перемещать подсветку туда, то с клавиатурой так не выйдет. Так что, считай это особенностью платформы.
(0000192)
frodo   
2012-01-16 22:21   
Последний раз открываю этот вопрос, обещаю.
Разве нельзя запоминать параметры 'текст/локация перехода' для кнопки с фокусом? Если после паузы кнопка с такими 'текстом/локацией' существует - назначить ей фокус.
К слову, в досурке курсор остается на кнопке, даже если уйти с локации, а затем вернуться.
(0000193)
fireton   
2012-01-17 21:21   
Досурка работает по-другому. В фурке кнопки пересоздаются при каждой остановке (end, pause). Потому сохранить фокус нельзя. Можно подумать над сохранением фокуса при pause, но даже там можно между pause грохнуть все кнопки через clsb и создать новые. Хорош я буду, сохранив фокус. В любом случае, задача далеко не приоритетна, а геморроя и потенциальных багов прибавит. Потому отказать.