Как установить фокус ввода-TextField без сценической ссылки? - PullRequest
2 голосов
/ 09 мая 2011

Я получил текстовое поле ввода:

var textfield:TextField = new TextField();
textfield.text = "";
textfield.type = TextFieldType.INPUT;
addChild(textfield);

, поскольку это текстовое поле не находится в основном классе, у меня нет ссылки на этап для выполнения:

textfield.stage.focus = textfield;
or 
stage.focus = textfield

Как заставить текстовое поле отображать мигающую линию в нулевой позиции?

Ответы [ 4 ]

2 голосов
/ 09 мая 2011

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

Код основного класса:

public class MainClass extends Sprite{
    public static var STAGE : Stage;

    public function MainClass(){
        STAGE = stage;
    }
}

Код класса текстового поля:

MainClass.STAGE.focus = myTextfield;
1 голос
/ 09 мая 2011

Это ошибка флеш-плеера, потому что если вы установите фокус с помощью stage.focus = textfield, текстовое поле на самом деле имеет фокус (вы можете написать что-нибудь), но мигающий курсор отсутствует. С другой стороны, мигает курсор, но только когда вы запускаете SWF локально в плеере (не в браузере). Чтобы сообщить людям, что они могут что-то написать прямо сейчас, вы можете сделать курсор самостоятельно - просто создайте линию, анимируйте ее и скрывайте, когда кто-то пишет первое письмо.

0 голосов
/ 12 января 2017

Наконец-то я получил решение

попробуйте этот код, он будет работать

public function SetFocus(mc:TextField):void{            
    addEventListener(Event.ENTER_FRAME,focus);
    function focus(E:Event){
        stage.focus=mc;
        if(mc.name.toString()==stage.focus.name.toString()){
            removeEventListener(Event.ENTER_FRAME,focus);   
        }
    }
}

вам нужно назвать текстовое поле, тогда вы сможете легко его использовать

0 голосов
/ 29 декабря 2013

Фокусировка курсора иногда срабатывает, что тем более расстраивает. У меня такая ситуация с двумя практически идентичными приложениями. У того, кто не работает, работает анимация. Это может быть конфликт.

...