Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Виртуальная клавиатура и фокус текстового поля (http://www.flasher.ru/forum/showthread.php?t=185440)

Logun 12.10.2012 16:38

Виртуальная клавиатура и фокус текстового поля
 
Делаю виртуальную клавиатуру, несколько текстовых полей, когда какое нибудь текстовое поле получает фокус появляется клавиатура, но при нажатии на кнопку виртуальной клавиатуры фокус из текстового поля соответственно пропадает...Гуру подскажите как сделать чтобы фокус не пропадал из текстового поля?

caseyryan 12.10.2012 16:47

В обработчике нажатия кнопки перемещать focus обратно на текстовое поле

Isfet 12.10.2012 16:49

храните ссылку на активный техтфилд, когда он активен, рисуйте вокруг него допустим рамку, зачем вам чтобы он был в фокусе?
а в классе текстфилда создайте функцию setText() и передвавайте туда введеные с виртуальной клавиатуры буквы.

Logun 12.10.2012 17:10

Сенк!

Приложение для интерактивной доски, фокус (мигающий курсор) нужен для наглядности

Добавлено через 1 час 7 минут
Isfet а можно поподробней про setText(), идею не уловил в силу малоопытности)

Isfet 12.10.2012 18:24

ваши текстовые поля будут иметь класс MyTextField допустим , наследуемый от TextField, в нем напишите метод
Код AS3:

public function setText(inputText:String):void{
//в  текстовое поле дописываем текст
    this.appendText(inputText);
}

а в классе контейнере такой код:
Код AS3:

public function setActiveTextFieldText(inputText:String):void{
      //в активное текстовое поле(на которое вы должны хранить ссылку)  дописываем текст
    this.activeTextField.setText(inputText);
}

,если вы конечно работали с классами.

Logun 12.10.2012 19:35

А разве нельзя просто

Код AS3:

public function setActiveTextFieldText(inputText:String):void{
    this.activeTextField.appendText(inputText);
}

???

caseyryan 12.10.2012 19:44

Isfet я думаю лучше было бы отказаться от контейнера, и сразу написать класс расширяющий TextField, в котором будет рисоваться желтая рамка вокруг текста.
А вообще, сама идея правильная. Поддерживаю.
Фокус нужен, если вводить с физической клавиатуры, и то не обязательно. Ведь можно просто перехватывать нажатия клавишь, и вводить их в заранее указанное текстовое поле

Logun 12.10.2012 19:58

Понятно...
Но у меня задачка немного специфическая...как я говорил приложение для интерактивной доски, в определенный момент выводится окошко с настройками сетевой карты специфицеской операционки...вот мне и нужно имитировать поведение этого окошка (в частности фокуса) как в самой операционке... но это все лирика, спасибо за помощь!

caseyryan 12.10.2012 22:16

Данный способ позволит реализовать такой функционал без проблем. Главное реализовать переключение между текстфилдами

Logun 12.10.2012 22:17

Дабы новую тему не создавать спрошу здесь.
Не могу разобраться с dispatchEvent, но нажатию на виртуальную кнопку нужно в TextField вписать соответствующий символ.

Делаю так:
Код AS3:

key.addEventListener(MouseEvent.CLICK, yyyy);
txt.addEventListener(KeyboardEvent.KEY_DOWN, xxxx);
 
function xxxx(evt: KeyboardEvent): void {
        trace(evt.charCode);
}
 
function yyy(e: MouseEvent): void {
        var ev: KeyboardEvent = new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 50);
        stage.focus = txt;
        dispatchEvent(ev);
}

trace молчит. Где я что не так делаю?


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

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