![]() |
|
||||||||||
|
|||||
|
Регистрация: Jun 2002
Адрес: неустойчивое
Сообщений: 30
|
Товарищи,
Если в 7-ке при нажатом ctrl ещё можно было услышать up-event "опасной" комбинации (кое-как получалось эмулировать эти шорткаты для самописных редакторов), то, начиная с 8-ки даже up-event не проходит. Может кто сталкивался - можно ли что-нить сделать? Заранее спасибо. |
|
|||||
|
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
|
или ответ мог быть таким: "Key.isDown" -)
|
|
|||||
|
Регистрация: Jun 2002
Адрес: неустойчивое
Сообщений: 30
|
Ага, согласен. Для fp8/as2 шорткат эмулируется просмотром по EnterFrame Key.isDown - комбинаций.
Только у меня проблема в as3 Там в принципе нет статического места, где всегда можно узнать состояние клавиши. Всё привязано к KeyboardEvent, а он как раз и не приходит. В начале я писал тему в ActionScript3, просто переместили потом ![]() Если есть мысли, что можно сделать в as3 - буду очень благодарен. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
Переезжаем в AS3, раз раскрылись такие «подробности». |
|
|||||
|
Регистрация: Jun 2002
Адрес: неустойчивое
Сообщений: 30
|
Да я не вру
Просто мог забыть или не обратить внимание. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
Регистрация: Oct 2003
Адрес: Москва
Сообщений: 328
|
Эти комбинации ловятся по KeyboardEvent.KEY_UP
Например, см. статью по созданию редактора http://www.timezero.ru/storm/editor5.html#a07 |
|
|||||
|
Регистрация: Jun 2002
Адрес: неустойчивое
Сообщений: 30
|
Я начал ветку с утверждения, что такой подход не работает.
В любом случае ты не совсем верно ловишь ctrl-комбинацию. Ты рассматриваешь только случай 1. "ctrl-down -> key-down -> key-up -> ctrl-up" , когда подавляющее большинство людей юзает 2. "ctrl-down -> key-down -> ctrl-up -> key-up". Идеальное решение - обработать оба варианта. Обработка только первого объективно практически не работает (попробуйте сами медленно проделать эту спиномозговую операцию в домашних условиях ).Довольно просто сравнить поведение для разных версий плеера (нажимаем ctrl-c): 1) fp7 Key.addListener(_root);
onKeyUp = function (){trace ("keyUp: " + Key.getCode())}
onKeyDown = function (){trace ("keyDown: " + Key.getCode())}
1. 2. То есть оба варианта обрабатываются при получении ап-эвента: ctrl или нажат, или был отпущен сразу перед текущей клавишей. 2) fp8. Код аналогичен fp7 output: 1. 2. То есть уже в 8-ке, в отличие от 7-ки, "дырку" с up-эвентами опасных комбинаций закрыли для обоих случаев. 3) fp9 package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.KeyboardEvent;
import flash.events.Event;
public class as_test extends Sprite
{
public function as_test()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKey);
stage.addEventListener(KeyboardEvent.KEY_UP, onKey);
addEventListener(Event.ENTER_FRAME, function (e:Event):void
{
stage.focus = stage;
});
}
private function onKey (e:KeyboardEvent):void
{
trace (e.type, e.keyCode);
}
}
}
1. 2. То есть обработать мы можем только первый вариант, который практически ничего нам не даёт ![]() |
|
|||||
|
Регистрация: Jun 2002
Адрес: неустойчивое
Сообщений: 30
|
Хотя на flash-mx.ru Делимитер подсказал мега-решение написать "слушателя" на as2/fp7, загрузить в as3-приложение и настроить LocalConnection между ними
![]() Не очень красиво, зато работает и является решением проблемы. |
![]() |
![]() |
Часовой пояс GMT +4, время: 00:07. |
|
|
« Предыдущая тема | Следующая тема » |
|
|