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

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

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

Регистрация: Mar 2011
Сообщений: 38
Код AS3:
package {
	import flash.events.KeyboardEvent;
	import flash.text.*;
	import flash.display.MovieClip;
 
	public class Mine  extends MovieClip {
		var inputTextField:TextField = new TextField(); 
 
		public function Mine () {
 
	               inputTextField.type = TextFieldType.INPUT;
			inputTextField.addEventListener(KeyboardEvent.KEY_UP, changer1);
			this.addChild(inputTextField);
		}
 
		public function changer1(e) {
			if (e.keyCode==13){
				trace("ch13");
			}
		}
	}
}

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

Регистрация: Oct 2011
Сообщений: 46
так.. сложилось впечатление что я изначально не правильно вас понял и зря мучал. Проблема возникает только с textField.Когда вы мне советовали использовать textinput, я думал это событие TextEvent.TEXT_INPUT. с компонентом textinput всё раьотает (хотя я думаю и с textField все прекрасно должно работать)
Код AS3:
myobject.addEventListener(ComponentEvent.ENTER, Handler_6);
 
function Handler_6(e:Event):void
{
	log.addLog("работает");
}
но беда в том что мне нужен именно textField т.к. у textinput не прозрачный фон... пытался сделать прозрачным
Код AS3:
textInput.textField.background=false
но нчиего не вышло.

Добавлено через 11 минут
MAPUTO ну вот вышеприведенный мой код по сути ничем от вашего не отличается. Пробовал и с KEY_UP... Отличия только в том что у меня textField не динамически создаётся. он уже присутствует на сцене, и в том что он вложен еще в два объекта movieClip. но при создании прослушки я указываю полный путь к нему и проблем из за этого быть не должно. Ох уж этот AS3... уже такую работу проделал, а с какой то извиняюсь лажей, столько проблем...

Старый 10.11.2011, 02:07
MAPUTO вне форума Посмотреть профиль Отправить личное сообщение для MAPUTO Найти все сообщения от MAPUTO
  № 13  
Ответить с цитированием
MAPUTO
 
Аватар для MAPUTO

Регистрация: Mar 2011
Сообщений: 38
Цитата:
Сообщение от noobuser Посмотреть сообщение
но нчиего не вышло.
Может поподробнее стоит описать ошибку, которую выдает компилятор?

А чтоб фон убрать - попробуй убрать обводку
Код AS1/AS2:
textInput.textField.border=false


Последний раз редактировалось MAPUTO; 10.11.2011 в 02:11.
Старый 10.11.2011, 03:59
noobuser вне форума Посмотреть профиль Отправить личное сообщение для noobuser Найти все сообщения от noobuser
  № 14  
Ответить с цитированием
noobuser
 
Аватар для noobuser

Регистрация: Oct 2011
Сообщений: 46
Ошибки никакой нет. Всё прекрасно компилируется и запускается. Только вот при нажатии Enter'a не происходит того, что должно происходить.
Код AS3:
log.addLog("работает");
сам этот метод addLog() рабочий. Он много раз уже использовался. Сам понимаю что если всё компилируется то ошибка какая то глупая типа "забыл тип данных указать..." но не могу понять где именно я эту ошибку допустил. Все описаные мной здесь методы и комбинации компилировались без ошибок. НО не выполнялась сама функция. Даже если просто повесить слушатель на KEY_DOWN то всё работает. а если вставить проверку
Код AS3:
if (e.keyCode==13)
то уже не работает...

Добавлено через 30 минут
уже ради любопытства не делаю никаких проверок, а вешаю колбэк на нажатие клавиш в котором просто выводится в лог keyCode нажатой клавиши, так вот всё прекрасно выводится для всех клавиш кроме ALT и ENTER... на эти клавиши ничего в лог не выводится.

Старый 10.11.2011, 06:02
Newred вне форума Посмотреть профиль Отправить личное сообщение для Newred Посетить домашнюю страницу Newred Найти все сообщения от Newred
  № 15  
Ответить с цитированием
Newred
 
Аватар для Newred

Регистрация: May 2010
Адрес: Киев, Украина
Сообщений: 140
Записей в блоге: 2
Код AS3:
myobject.addEventListener(KeyboardEvent.KEY_DOWN, Handler_6);
Заменить на
Код AS3:
stage.addEventListener(KeyboardEvent.KEY_DOWN, Handler_6);
Не ?

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

Регистрация: Oct 2011
Сообщений: 46
нет =( оно то работает, НО оно не отлавливает enter и alt... нажатие ентера отлавливается только объектом textInput (но он меня не устраивает)

Добавлено через 3 часа 11 минут
не пойму, это я такой дурак, чего то не понимаю ? Гугл выдаёт десятки подобных проблем которые решаются описанными здесь методами. Все как один говорят одно и тоже, но у меня для textField не работает... Почему оно именно ентер не отлавливает ?

Старый 29.11.2011, 01:02
noobuser вне форума Посмотреть профиль Отправить личное сообщение для noobuser Найти все сообщения от noobuser
  № 17  
Ответить с цитированием
noobuser
 
Аватар для noobuser

Регистрация: Oct 2011
Сообщений: 46
Всё таки хотелось бы разобраться с этим вопросом... Поковырялся и возникло несколько вопросов:
1. Почему когда ставится прослушка на TextField
Код AS3:
myTextField.addEventListener(KeyboardEvent.KEY_UP, fl_MouseClickHandler_6);
function fl_MouseClickHandler_6(e:KeyboardEvent):void
{
addLog(e.keyCode);
}
нажатия отлавливаются для всех клавиш кроме alt, ctrl, enter. Разве это нормально? Да, для отслеживания нажатия ctrl, alt, shift есть отдельные свойства, но для enter ничего подобного нет, значит оно должно отслеживаться как и все остальные цифро-буквенные клавиши. Нет ?
2. Делаю через stage.
Код AS3:
myTextField.addEventListener(FocusEvent.FOCUS_IN, function(event:FocusEvent){
	stage.addEventListener(KeyboardEvent.KEY_UP, fl_MouseClickHandler_6);
	});
 
function fl_MouseClickHandler_6(e:KeyboardEvent):void
{
 
	if (e.keyCode==Keyboard.ENTER){
		stage.focus=MyBtn;
	}
	addLog(e.keyCode.toString());
}
Нажатие enter'a отлавливается ТОЛЬКО если какой то объект сцены находится в фокусе. Например перед тем как нажать enter, нажимаю пару раз Tab, какой то объект выделяется желтой рамкой, и нажимаю enter. В этом случае почти всё хорошо, кнопка MyBtn получает фокус. НО..
2.1 как избавиться от желтых рамок?
2.2 При первом нажатии enter'a кнопка только получает фокус, но не нажимается. А необходимо чтобы кнопка сразу же и нажималась.

Добавлено через 1 час 6 минут
Ё-моё... Ну наконец-то нашёлся идеальный для меня способ.
Код AS3:
MyTextField.addEventListener(TextEvent.TEXT_INPUT,inputHeader);
 
function inputHeader(e:TextEvent):void {
	if (e.text.charCodeAt().toString()=="13")
	MyBtn.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
Не нужны никакие заморочки с фокусом, ентер в таком случае отлично отлавливается. По-моему самое что ни на есть программное нажатие кнопки. Но почему никто не посоветовал подобный метод ? Есть какие то подкавырки? или этот способ не кошерный ? или просто никто не вспомнил ?


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

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

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


 


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


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