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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 13.10.2012, 06:39
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 11  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
я как понял, виртуальная клавиатура - это клавиатура которая появляется во флешке, и при нажатии на нее... МЫШКОЙ... происходит записывание символа, который храниться в кнопке в активное текстовое поле.
Возникает вопрос: причем здесь KeyboardEvent? Вам нужно слушать только мышку.

Старый 13.10.2012, 10:28
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 12  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Во первых Вы подписываетесь на функцию yyyy, а на самом деле функция у Вас называется yyy. И во вторых, Вы диспатчите событие вникуда (в данном случае), а нужно (по Вашей логике):
Код AS3:
function yyy(e: MouseEvent): void {
	var ev: KeyboardEvent = new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 50);
	stage.focus = txt;
	txt.dispatchEvent(ev);
}
__________________
http://www.chessmax.ru

Старый 13.10.2012, 21:36
Logun вне форума Посмотреть профиль Отправить личное сообщение для Logun Найти все сообщения от Logun
  № 13  
Ответить с цитированием
Logun

Регистрация: Sep 2012
Сообщений: 15
Isfet мне нужно чтобы TextField думал, что как будто клавишу на клавиатуре нажали.

Inet_PC, да, ошибся с yyy, но это здесь названия функций исправлял для простоты, во флеше все нормально, т.е. получается я не могу переслать событие всем объектам на сцене, а только конкретному?
Подправил по вашей рекомендации:
Код AS3:
key.addEventListener(MouseEvent.CLICK, yyyy);
txt.addEventListener(KeyboardEvent.KEY_DOWN, xxxx);
 
function xxxx(evt: KeyboardEvent): void {
	trace(evt.charCode);
}
 
function yyyy(e: MouseEvent): void {
	var ev: KeyboardEvent = new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 50);
	stage.focus = txt;
	txt.dispatchEvent(ev);
}
trace ожил, а вот в TextField тишина, символ не появляется(

Старый 13.10.2012, 22:44
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 14  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
Цитата:
trace ожил, а вот в TextField тишина, символ не появляется(
Видимо не получится просто так взять и сымитировать нажатие клавиши. Воспользуйтесь уже данными выше советами: по клику добавляйте букву в Ваше текстовое поле, не забываете про фокус, так же можно запоминать позицию каретки (или просто убрать выделение).
__________________
http://www.chessmax.ru

Старый 13.10.2012, 23:08
Logun вне форума Посмотреть профиль Отправить личное сообщение для Logun Найти все сообщения от Logun
  № 15  
Ответить с цитированием
Logun

Регистрация: Sep 2012
Сообщений: 15
Печально...толку тогда от этого диспатчера в этом конкретном случае, событие создается, передается, реакции ноль...

Попробовал сейчас так:
Код AS3:
function yyyy(e: MouseEvent): void {
	var ev: TextEvent = new TextEvent(TextEvent.TEXT_INPUT, true, false, '2');
	stage.focus = txt;
	txt.dispatchEvent(ev);
}
та же история - тишина.

Цитата:
Воспользуйтесь уже данными выше советами: по клику добавляйте букву в Ваше текстовое поле, не забываете про фокус, так же можно запоминать позицию каретки (или просто убрать выделение).
Так и сделал вчера, но как то не очень это красивая реализация, первое всплывшее неудобство - так я в свойствах TextField задал максимальное количество символов и забыл...а тут вручную контролировать нужно сколько уже введено.

Интересно все же по какому событию в TextField символ рисуется. Может офицеры знают?)


Последний раз редактировалось Logun; 14.10.2012 в 00:25.
Старый 14.10.2012, 09:46
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 16  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
а тут вручную контролировать нужно сколько уже введено.
Это такая проблема? Достаточно в обработчик одну строчку добавить
Код AS3:
if (textField.text.length + 1 > maxLength) return;
Да и что-то мне подсказывает, что если текстовому полю задать параметр maxChars, то ничего дополнительно контролировать будет не нужно.

Старый 14.10.2012, 14:31
Logun вне форума Посмотреть профиль Отправить личное сообщение для Logun Найти все сообщения от Logun
  № 17  
Ответить с цитированием
Logun

Регистрация: Sep 2012
Сообщений: 15
caseyryan не отрабатывает ни maxChars, ни restrict которые у меня заданы.
Цитата:
Это такая проблема? Достаточно в обработчик одну строчку добавить
Нет не проблема конечно, просто по логике вещей, я прописываю поведение объекта в самом объекте, а потом уже посылаю ему события, а тут приходится писать функционал (хоть и не большой) который где то уже в TextField прописан, но видно он отрабатывается только по событиям ввода с клавиатуры, вот я и думал что можно симулировать события от клавиатуры, а appendText, как советовали выше, и собственно, как и пришлось делать, тупо добавляет текст в TextField...

Все это чертова привычка (с других языков) писать красивый грамотный код и не создавать лишнего.

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Все это чертова привычка (с других языков) писать красивый грамотный код и не создавать лишнего.
Это хорошая привычка, но в одной строчке ничего некрасивого нет. Тут, да, похоже только для ввода с клавиатуры функционал вшит, поэтому вполне нормально добавить дополнительный функционал, имхо.

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

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

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


 


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


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