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

  • Официальное уведомление администрации CustomGames.RU
    В связи с масштабным техническим сбоем в инфраструктуре прежнего хостинг-провайдера (Beget), работа форума CustomGames.RU была оперативно перенесена на новую серверную площадку и развёрнута из резервной копии базы данных.

    • Безопасность данных: учётные записи и данные пользователей находятся в полной безопасности. Все пароли и защищаемые параметры хранятся исключительно в криптографически зашифрованном (хэшированном) виде — никаких критических инцидентов для аккаунтов пользователей не произошло.
    • Временные технические ограничения: на этапе синхронизации файлового хранилища часть статических материалов (пользовательские аватары и архивные вложения) временно недоступна. По мере получения доступа к файловым архивам все материалы будут восстановлены в полном объёме.
20 Дек 2016
892
171
Пытаюсь сделать раскрываемую панель, с поведением как у раскрытого дерева талантов, которая должна закрываться при нажатии Esc или ЛКМ в пустом месте.
Нажатие ЛКМ, как я понял, нужно отслеживать с помощью GameUI.SetMouseCallback()
Но как отследить нажатие Esc я вообще не могу понять. oncancel и RegisterKeyBind работают только если на панели есть фокус, но в данном случае это явно не тот вариант, ведь во время фокуса не работают дефолтные команды. CreateCustomKeyBind подразумевает создание кастомной команды, но вряд ли это нужно делать для такой элементарной вещи? Так как отслеить нажатие Esc самым нормальным образом? Мб есть что-то на подобии SetMouseCallback для клавиатуры, но просто я не нашел?
 
Пытаюсь сделать раскрываемую панель, с поведением как у раскрытого дерева талантов, которая должна закрываться при нажатии Esc или ЛКМ в пустом месте.
Нажатие ЛКМ, как я понял, нужно отслеживать с помощью GameUI.SetMouseCallback()
Но как отследить нажатие Esc я вообще не могу понять. oncancel и RegisterKeyBind работают только если на панели есть фокус, но в данном случае это явно не тот вариант, ведь во время фокуса не работают дефолтные команды. CreateCustomKeyBind подразумевает создание кастомной команды, но вряд ли это нужно делать для такой элементарной вещи? Так как отслеить нажатие Esc самым нормальным образом? Мб есть что-то на подобии SetMouseCallback для клавиатуры, но просто я не нашел?
Создавать команду офк
 
Хз, не получается на ескейп забиндить, хотя с другими клавишами работает
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
Его нельзя забиндить. У панели есть ивент oncancel
 
Его нельзя забиндить. У панели есть ивент oncancel
Этот эвент без фокуса на панели не работает.
Мне по описанным причинам нужно без фокуса. Да и onblur почему-то не срабатывает, поэтому если с панели пропадает фокус при нажатии куда-либо, то ее закрыть уже вообще не возможно.
 
Последнее редактирование:
Реклама: