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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.09.2011, 18:12
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 1  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
По умолчанию ctrl+enter Как обойти одновременное нажатие 2-х клавиш?

Код AS3:
// пытаю сделать так.
private function KEY_DOWN(e:KeyboardEvent):void 
{
	if (e.keyCode == 13 && e.ctrlKey) {
		super.appendText("\n");
		super.setSelection(super.text.length, super.text.length);
	}
}
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

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

Регистрация: Apr 2009
Адрес: Armenia , Yerevan
Сообщений: 145
Ну возможно так , сначало регистрировать нажатие одного из них , потом устанавить таймаут , если вторая кнопка нажата до окончания таймаута то игнорировать в ином случае регистрировать.
__________________
Urartu is a neoHittite and ProtoArmenian kingdom !!

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Задача, сделать как в скайпе. Но как я понял, одновременно зажать 2 клавиши не выйдет.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 24.09.2011, 18:57
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 4  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Юзаем класс Key
Код AS3:
package  {
 
	import flash.display.Stage;
	import flash.display.StageDisplayState;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.geom.Rectangle;
 
	public class Key {
 
		private static var initialized:Boolean = false;		
		private static var keysDown:Object = new Object();	
 
		public static function initialize(stage:Stage):void {
			if (!initialized) {
				stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
				stage.addEventListener(KeyboardEvent.KEY_UP, keyReleased);
				stage.addEventListener(Event.DEACTIVATE, clearKeys);
				initialized = true;
			}
		}
 
		public static function isDown(keyCode:uint):Boolean {
			if (!initialized) {
				throw new Error("Key class has not been initialized yet.");
			}
			return Boolean(keyCode in keysDown);
		}
		private static function keyPressed(event:KeyboardEvent):void {
			keysDown[event.keyCode] = true;
		}
		private static function keyReleased(event:KeyboardEvent):void {
			if (event.keyCode in keysDown) {
				delete keysDown[event.keyCode];
			}
		}
		private static function clearKeys(event:Event):void {
			keysDown = new Object();
		}
	}
}
Используется просто, сначала где-то инициализируем его:
Код AS3:
Key.initialize(stage);
потом проверяем нажата ли какая-либо клавиша так:
Код AS3:
if (Key.isDown(Keyboard.CONTROL) {
     trace("клавиша контрол сейчас зажата");
}

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Проблема в том что при зажатом ctrl, enter или любая другая клавиша не нажимается.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 24.09.2011, 19:25
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 6  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Отлично все нажимается.
Если речь идет от флеш иде, то там просто это сочетание для пере/компиляции, но это не говорит о том, что нельзя нажать контрол и энтер одновременно в принципе.
Если же речь о флешдевелоп, то не понимаю в чем проблема.
Вот у меня код:

Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
	import flash.ui.Keyboard;
 
 
	[SWF(width = 800, height = 600, backgroundColor = 0xC7FEFB)]
	[Frame(factoryClass="Preloader")]
	public class Main extends Sprite 
	{
		private var _controller:	Controller;
 
		public function Main():void {
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void {
			Key.initialize(stage);
			stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
		}
 
		private function onKeyUp(e:KeyboardEvent):void {
			if (e.keyCode == Keyboard.ENTER) {
				trace("enter is pressed and controlDown: " + Key.isDown(Keyboard.CONTROL));
			}
		}
	}
}
Трейс срабатывает при нажатом контроле, и выводит строчку:

Цитата:
enter is pressed and controlDown: true

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Код AS3:
// так, вроде бы понял.
// я проверял на нажатие. сейчас на отжатие работает.
private function KEY_UP/* <== */(e:KeyboardEvent):void 
{
	if (e.keyCode == 13 && e.ctrlKey) {
		super.replaceText(super.caretIndex, super.caretIndex, "\n");
		super.setSelection(super.caretIndex + 1, super.caretIndex + 1);
	}
}
// goodguy спасибо конечно но на фига столько кода?
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

Старый 24.09.2011, 20:22
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 8  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Цитата:
goodguy спасибо конечно но на фига столько кода?
Это универсальный код. Им можно проверять любые клавиши. Никто не заставляет его использовать, я его привел вообще чисто для того, чтобы показать, что все работает.

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

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Ясно, спасибо за помощь.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!

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

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

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


 


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


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