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

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

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

Регистрация: Apr 2011
Сообщений: 4
Question При нажатии мышкой эмулировать удержание ctrl(клавиши)+Mouse.CLICK

Необходимо при нажатии мышкой эмулировать удержание ctrl(клавиши) +Mouse.CLICK. т.е. мультиселект мышкой, без нажатия физически клавиши ctrl, её надо сэмулировать программно. либо её функционал.

Имеется TileList --> myTileList

В сети нашёл рабочий пример для клавиши Вверх. Этот код просто как пример, что он работает , в использовании он НЕ нужен.
Код AS3:
var keyCode:uint = Keyboard.UP;
var e:KeyboardEvent = new KeyboardEvent( KeyboardEvent.KEY_DOWN, true, false, 0, keyCode);
myTileList.dispatchEvent( e );
}
А Следующий код нужен, но он не работает. При щелчке мышью по элементу в myTileList должна эмулироваться уже зажатая CTRL. Т.е. один раз кликаю и элемент выделяется, кликаю по другому он тоже выделяется, причём выделение не спадает пока не кликну ещё раз по этому же элементу. Ну т.е. обычное поведение клавиши CTRL.
Код AS3:
myTileList.allowMultipleSelection = true;
myTileList.addEventListener(Event.CHANGE, thumbnailClicked); 
 
function thumbnailClicked(event:Event):void { 
var keyCode:uint = Keyboard.CONTROL;
var ctrlKey:Boolean = true;
var e:KeyboardEvent = new KeyboardEvent( KeyboardEvent.KEY_DOWN, true, false, 0, keyCode,0,ctrlKey);
myTileList.dispatchEvent( e );
Пробовал передавать код клавиши 17. но такая же шляпа, trace ловит ctrl при щелчке мышью, но TileList не выделяет элемент при клике.

Пробовал мышкой эмулировать, но это вообще не в ту степь наверное.
Код AS3:
var m:MouseEvent = new MouseEvent(MouseEvent.CLICK,true,false,NaN,NaN,null,ctrlKey);
Гуглил и смотрел справки но решения проблемы так и не нашёл.
http://help.adobe.com/ru_RU/AS3LCR/F...KeyboardEvent()
http://help.adobe.com/en_US/FlashPla...t.html#ctrlKey
а также:
http://livedocs.adobe.com/flash/9.0/...ouseEvent.html


Последний раз редактировалось farm.EHoT; 20.04.2011 в 15:17.
Старый 20.04.2011, 14:29
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 2  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Вы хотите мультиселект клавой? Не проще ловить вверх с ктрл и высчитывать элементы , которые селектятся и отдавать их в тайлЛист?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 20.04.2011, 14:53
farm.EHoT вне форума Посмотреть профиль Отправить личное сообщение для farm.EHoT Найти все сообщения от farm.EHoT
  № 3  
Ответить с цитированием
farm.EHoT
 
Аватар для farm.EHoT

Регистрация: Apr 2011
Сообщений: 4
нужно выделение элемента при одиночном нажатии мышкой, так, как будто бы это было сделано с использованием клавишей ctrl. т.е. кликнул по элементу он выделился, кликнул по другому он тоже выделился, но предыдущий не пропал и т.д. кликнул снова по ранее выделенному элементу выделение с него убралось.(ну та же в принципе функциональность как и у клавиши ctrl). Ранее думал это всё Checkbox-ами делать, там удобнее someVar.checked = !someVar.checked, но там слишком много кода получается чтобы сделать такую же функциональность как и просто TileList с нажатой клавишей ctrl.

Добавлено через 25 часов 26 минут
appendText() при клике по элементу ? окрашивать под "выделение" и затем считать как массив? Вы про этот вариант?
Каким способом можно узнать какие действия выполняет физическое нажатие CTRL вообще и применительно к TileList. Уважаемые профессионалы, есть идеи?


Последний раз редактировалось farm.EHoT; 21.04.2011 в 16:21.
Старый 29.05.2011, 00:41
Лысый Червь вне форума Посмотреть профиль Отправить личное сообщение для Лысый Червь Найти все сообщения от Лысый Червь
  № 4  
Ответить с цитированием
Лысый Червь

Регистрация: Jun 2010
Сообщений: 18
а если внутри класса что-то в функции подправить?

Добавлено через 48 часов 8 минут
это надо вставить в функцию вызываемую слушателем:
Код AS3:
var _my_list:List = event.currentTarget as List;
	ar[_my_list.selectedIndex] = !ar[_my_list.selectedIndex];	//ar -логический массив 
	m=0;
	_ar = new Array();
	for (i=0;i<=ar.length;i++){
		if (ar[i]){
			_ar[m]=i;
			m++
		}				
	}
	my_list.selectedIndices=_ar;
__________________
trolling-forum.ru | Троллинг Форум Сайт посвященный толстому и тонкому троллингу

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

Теги
CTRL , ctrl+mouse
Опции темы
Опции просмотра

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

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


 


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


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