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

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

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

Регистрация: May 2006
Сообщений: 47
По умолчанию Вопрос по TextInput

Подскажите, какой метод мне нужно переопределить для того, чтобы изменить поведение курсора в компоненте TextInput? Мне нужно, чтобы нажатие стрелочки вверх не переводило курсор в начало текстового поля.
Я пробовал override protected function keyDownHandler, но, оказалось, что этот метод только добавляет ивент ENTER и все.

P. S. Я создал подобную тему здесь но её сразу закрыли. Документацию по модификации компонент я читал, ответа на мой вопрос там нет. Мне просто нужен совет опытного человека, который переопределял стандартные ивенты компонент.

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

Регистрация: Apr 2006
Адрес: Kursk, Russia
Сообщений: 523
Отправить сообщение для vooparker с помощью ICQ
Либо я не понял вопроса, но зачем переопределять метод?
Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[		
	private var prevValue : String = 'prev console message';
			
	public function upKeyHandler ( e:KeyboardEvent ) : void
	{
		if( e.keyCode == Keyboard.UP )
		{
			con.text = prevValue;
			con.setSelection( con.text.length, con.text.length);
		}
	}
]]>
</mx:Script>
<mx:TextInput id="con" x="10" y="50" width="200" keyDown="upKeyHandler(event)" />	
</mx:Application>
__________________
Челябинские флешеры настолько суровы, что пишут код во Flash IDE

Старый 08.05.2007, 14:57
Powerhead вне форума Посмотреть профиль Отправить личное сообщение для Powerhead Найти все сообщения от Powerhead
  № 3  
Ответить с цитированием
Powerhead

Регистрация: May 2006
Сообщений: 47
Ура. Как все просто. Спасибо =)

Старый 08.05.2007, 15:13
Powerhead вне форума Посмотреть профиль Отправить личное сообщение для Powerhead Найти все сообщения от Powerhead
  № 4  
Ответить с цитированием
Powerhead

Регистрация: May 2006
Сообщений: 47
vooparker, твой способ отлично работает, спасибо.
Но ты не мог бы объяснить, почему, если я создаю TextInput программно, то этот способ не работает?
Вот код.

Код:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="createTextField()">

<mx:Script>
	<![CDATA[
		
	import mx.controls.TextInput;
	
	private var prevValue : String = 'prev console message';
			
	public function upKeyHandler ( e:KeyboardEvent ) : void
	{
		if( e.keyCode == Keyboard.UP )
		{
			e.target.text = prevValue;
			e.target.setSelection(e.target.text.length, e.target.text.length);
		}
	}
	
	public function createTextField():void
	{
		var myTxt:TextInput = new TextInput;

		myTxt.addEventListener(KeyboardEvent.KEY_DOWN, upKeyHandler);
		
		application.addChild(myTxt);
	}
		
	]]>
</mx:Script>

	
</mx:Application>
В этом случае курсор сместится только если слушать не KEY_DOWN, а KEY_UP, то есть, если заменить ивент на myTxt.addEventListener(KeyboardEvent.KEY_UP, upKeyHandler); Но, в этом случае, курсор прыгает в начало, пока клавиша нажата.

Старый 08.05.2007, 15:25
Powerhead вне форума Посмотреть профиль Отправить личное сообщение для Powerhead Найти все сообщения от Powerhead
  № 5  
Ответить с цитированием
Powerhead

Регистрация: May 2006
Сообщений: 47
В этом случае, почему-то не срабатывает e.target.setSelection, а сработает только id.setSelection (а если событие KEY_UP, то e.target.setSelection работает)



ЗЫ. все, разобрался. Работает, если вместо target юзать свойство currentTarget.
Разницу между ними пока не совсем понимаю


Последний раз редактировалось Powerhead; 08.05.2007 в 15:29.
Старый 08.05.2007, 15:30
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Используй currentTarget.

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

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

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


 


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


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