Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.03.2013, 17:41
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 1  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
По умолчанию Как словить Ctrl+C,V,X ?

Доброго времени суток.
Собственно сабж.

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

Старый 07.03.2013, 18:14
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 2  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
все отлично работает, как из флешдевелоп, так и в браузере, вот код:
Код 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. Там сначала надо отключить использование горячих клавишь.

Старый 07.03.2013, 18:16
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 3  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Вот оно что.
А я вешал на KEY_DOWN, там они не ловятся.
Спасибо!

Старый 07.03.2013, 19:12
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 4  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Хм.. а действительно, почему такая комбинация не ловится на KEY_DOWN? Хотя если на KEY_DOWN ловить ctrl + стрелку, то всё работает, а с буквами нет... Если кто-то знает ответ, подскажите пожалуйста в чём причина?

Старый 07.03.2013, 19:22
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 5  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
А с чего вы взяли что не ловится?
Не уверен, но что-то мне подсказывает, что из-за постоянной отправки события keyDown при удержании контрола это намеренно урезали.
Думаю глупо было бы вызывать сочетание грячих клавишь так часто. Разумнее на keyUp.

Старый 07.03.2013, 19:28
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от caseyryan Посмотреть сообщение
А с чего вы взяли что не ловится?
Когда увидел этот пост, подумал "странно, ведь с KEY_DOWN должно работать". Проверил и действительно - не сработала такая комбинация. Потом вместо клавиши "с" (67) подставил стрелку влево (37) и заработало как планировалось.
Проверял во FlashDevelop.

Старый 07.03.2013, 19:30
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 7  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
samana, да, я тоже проверил. Поправил свой пост.
Со стрелками все-таки не горячие клавиши, на такое сочетание часто управление объектами вешают

Старый 07.03.2013, 19:30
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 8  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

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

Старый 07.03.2013, 19:46
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 9  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Получается, что словить Event.COPY можно только если InteractiveObject в фокусе. И хотя stage по идее всегда в фокусе, но у меня так и не получилось словить им это событие без принудительного фокусирования. Странно..

Создать новую тему Ответ Часовой пояс GMT +4, время: 15:16.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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