2

テキストを取得しました-InputField:

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

このテキストフィールドはメインクラスに存在しないため、次のことを行うためのステージ参照がありません。

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

テキストフィールドにゼロの位置で点滅する線を表示させるにはどうすればよいですか?

4

4 に答える 4

2

メインクラスのステージに静的参照を追加し、それを介してフォーカスを設定できます(または、どこにいてもステージ参照を取得するための専用クラスを作成できます)。

メインクラスコード:

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

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

テキストフィールドクラスコード:

MainClass.STAGE.focus = myTextfield;
于 2011-05-09T08:58:28.183 に答える
1

これは一種のフラッシュプレーヤーのバグです。stage.focus=textfieldでフォーカスを設定すると、テキストフィールドには実際にフォーカスがあります(何かを書くことができます)が、カーソルが点滅することはありません。一方、カーソルが点滅しますが、これは、ブラウザではなく、プレーヤーでローカルにswfを起動した場合に限ります。今すぐ何かを書くことができることを人々に知らせるために、自分でカーソルを作成することができます-線を作成し、それをアニメーション化して、誰かが最初の文字を書いたときに非表示にします。

于 2011-05-09T13:31:56.610 に答える
0

カーソルフォーカスが機能することがありますが、これはさらに苛立たしいことです。私は2つのほぼ同じアプリでこの状況にあります。動作しないものはアニメーションが実行されています。競合の可能性があります。

于 2013-12-29T16:01:25.627 に答える
0

ついに私は解決策を得ました

このコードを試してみてください

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);   
        }
    }
}

テキストフィールドに名前を付ける必要があります。そうすれば、簡単に使用できます。

于 2017-01-12T17:24:07.273 に答える