Закрытие панели на Esc

20 Дек 2016
892
170
Пытаюсь сделать раскрываемую панель, с поведением как у раскрытого дерева талантов, которая должна закрываться при нажатии Esc или ЛКМ в пустом месте.
Нажатие ЛКМ, как я понял, нужно отслеживать с помощью GameUI.SetMouseCallback()
Но как отследить нажатие Esc я вообще не могу понять. oncancel и RegisterKeyBind работают только если на панели есть фокус, но в данном случае это явно не тот вариант, ведь во время фокуса не работают дефолтные команды. CreateCustomKeyBind подразумевает создание кастомной команды, но вряд ли это нужно делать для такой элементарной вещи? Так как отслеить нажатие Esc самым нормальным образом? Мб есть что-то на подобии SetMouseCallback для клавиатуры, но просто я не нашел?
 

I_GRIN_I

Друзья CG
15 Мар 2016
1,335
105
Пытаюсь сделать раскрываемую панель, с поведением как у раскрытого дерева талантов, которая должна закрываться при нажатии Esc или ЛКМ в пустом месте.
Нажатие ЛКМ, как я понял, нужно отслеживать с помощью GameUI.SetMouseCallback()
Но как отследить нажатие Esc я вообще не могу понять. oncancel и RegisterKeyBind работают только если на панели есть фокус, но в данном случае это явно не тот вариант, ведь во время фокуса не работают дефолтные команды. CreateCustomKeyBind подразумевает создание кастомной команды, но вряд ли это нужно делать для такой элементарной вещи? Так как отслеить нажатие Esc самым нормальным образом? Мб есть что-то на подобии SetMouseCallback для клавиатуры, но просто я не нашел?
Создавать команду офк
 
20 Дек 2016
892
170
Хз, не получается на ескейп забиндить, хотя с другими клавишами работает
JavaScript:
Game.CreateCustomKeyBind( 'esc', 'izdaaaa' );
Game.CreateCustomKeyBind( 'escape', 'izdaaaa' );
Game.CreateCustomKeyBind( 'key_esc', 'izdaaaa' );
Game.CreateCustomKeyBind( 'key_escape', 'izdaaaa' );
Game.CreateCustomKeyBind( 'cancel', 'izdaaaa' );
Game.AddCommand( 'izdaaaa', function(){ $.Msg('izdaa aa'); }, '', 0 );
 
  • Нравится
Реакции: dovernento

ZLOY

Администратор
Команда форума
27 Июн 2016
953
182
Его нельзя забиндить. У панели есть ивент oncancel
 
20 Дек 2016
892
170
Его нельзя забиндить. У панели есть ивент oncancel
Этот эвент без фокуса на панели не работает.
Мне по описанным причинам нужно без фокуса. Да и onblur почему-то не срабатывает, поэтому если с панели пропадает фокус при нажатии куда-либо, то ее закрыть уже вообще не возможно.
 
Последнее редактирование:
Реклама: