Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как словить Ctrl+C,V,X ? (http://www.flasher.ru/forum/showthread.php?t=195463)

AlexLucas 07.03.2013 17:41

Как словить Ctrl+C,V,X ?
 
Доброго времени суток.
Собственно сабж.

FP 11.3.
Попытки словить сначала e.ctrlKey и потом Keyboard.C, или наоборот, или словить Event.COPY/PASTE/CUT не увенчались успехом. Других вариантов не нашёл. Что и кем нужно ловить ?

caseyryan 07.03.2013 18:14

все отлично работает, как из флешдевелоп, так и в браузере, вот код:
Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.KeyboardEvent;
        import flash.ui.Keyboard;
 
 
        public class Main extends Sprite {
 
                public function Main() {
                        stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
                }
 
                private function onKeyUp(e:KeyboardEvent):void {
                        if (e.ctrlKey) {
                                if (e.keyCode == 67) {
                                        trace("CONTROL + C");
                                        var s:Sprite = new Sprite();
                                        s.graphics.beginFill(100000000 * Math.random());
                                        s.graphics.drawCircle(0, 0, 20);
                                        s.graphics.endFill();
                                        s.x = Math.random() * stage.stageWidth;
                                        s.y = Math.random() * stage.stageHeight;
                                        stage.addChild(s);
                                }
                        }
                }
 
        }
}

Это может не работать если запускается из Adobe Flash. Там сначала надо отключить использование горячих клавишь.

AlexLucas 07.03.2013 18:16

Вот оно что.
А я вешал на KEY_DOWN, там они не ловятся.
Спасибо!

samana 07.03.2013 19:12

Хм.. а действительно, почему такая комбинация не ловится на KEY_DOWN? Хотя если на KEY_DOWN ловить ctrl + стрелку, то всё работает, а с буквами нет... Если кто-то знает ответ, подскажите пожалуйста в чём причина?

caseyryan 07.03.2013 19:22

А с чего вы взяли что не ловится?
Не уверен, но что-то мне подсказывает, что из-за постоянной отправки события keyDown при удержании контрола это намеренно урезали.
Думаю глупо было бы вызывать сочетание грячих клавишь так часто. Разумнее на keyUp.

samana 07.03.2013 19:28

Цитата:

Сообщение от caseyryan (Сообщение 1124058)
А с чего вы взяли что не ловится?

Когда увидел этот пост, подумал "странно, ведь с KEY_DOWN должно работать". Проверил и действительно - не сработала такая комбинация. Потом вместо клавиши "с" (67) подставил стрелку влево (37) и заработало как планировалось.
Проверял во FlashDevelop.

caseyryan 07.03.2013 19:30

samana, да, я тоже проверил. Поправил свой пост.
Со стрелками все-таки не горячие клавиши, на такое сочетание часто управление объектами вешают

AlexLucas 07.03.2013 19:30

Потому что не всплывает.
Диспатчится Event.COPY, а не KeyboardEvent.
http://help.adobe.com/en_US/FlashPla...l#event%3Acopy
Вообще интересно получается : вот тут ловится http://pastebin.com/tDRu2URp
Мэйн класс сам диспатчит и сам ловит.
Но если подписать на событие stage, то он полюбому его словит, хотя e.target будет мэйн класс, то есть COPY таки всплывёт. Как так ?

samana 07.03.2013 19:46

Получается, что словить Event.COPY можно только если InteractiveObject в фокусе. И хотя stage по идее всегда в фокусе, но у меня так и не получилось словить им это событие без принудительного фокусирования. Странно..


Часовой пояс GMT +4, время: 02:12.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.