2009-03-27 11 views
1

私は、最初にバーコードスキャナから入力を受け取るAS3 Flashゲームに取り組んでいます。スキャンするデータは、タブを使用して1つの長い文字列としてデータセグメントを区切ります。スキャナはキーボードとして機能し、文字列を非表示のテキストフィールドに入力して、文字列を取得して分割してデータを取得できるようにします。Flashのテキストフィールドでタブ文字を許可するにはどうすればよいですか?

入力とすべてがうまくいきます。私が取り組んでいる問題は、テキストフィールドにタブ文字を受け取ったときに、その文字をテキストフィールドに挿入するのではなく、テキストフィールドにあるものを強調表示することです。その後、次の文字セットはすでにテキストフィールドにあったものを上書きします。

これを回避する手段はありますか?テキストフィールドにタブをリテラル文字として受け入れる方法はありますか?バーコードが文字列内のデータを区切る方法を変更することはできません。

ご協力いただきありがとうございます。

答えて

1

(解決策を更新しました)

これは本当に予防的です。次のテキストで停止することができます(Textがテキストフィールドであると仮定します)。

Text.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, TextKeyFocusChange); 

private function TextKeyFocusChange(e:FocusEvent):void 
{ 
    e.preventDefault(); 

    var txt:TextField = TextField(e.currentTarget); 

    txt.appendText("\t"); 
    txt.setSelection(txt.length, txt.length); 
} 
+0

これはほとんど動作します。私は "\ t"文字を追加することができませんが、 "?$"という一意の文字列を入力できます。問題は今、私が.appendText()を実行すると、カーソルが追加されたテキストの前にとどまることです。結果はデー​​タ文字列の後に一連の?$が続きます。 – user54331

+0

私の解決策を更新しました。私は\ tここで問題はない、それはタブ文字を挿入します。 –

+1

ユーザーがテキストの一部を選択した場合は、上書きされません。 –

4

以下は、ユーザーが任意の場所にテキストフィールドにタブを入力することができます

someTextField.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, TextKeyFocusChange); 
private function TextKeyFocusChange(e:FocusEvent):void 
{ 
    e.preventDefault();   
    var txt:TextField = TextField(e.currentTarget); 
    txt.replaceText(txt.caretIndex, txt.caretIndex, "\t"); 
    txt.setSelection(txt.caretIndex + 1, txt.caretIndex + 1); 
} 

注意を(だけでなく、終わりを。):このソリューションは、のappendTextを使用するよりも少し遅く、場合にのみ使用する必要がありますタブはTextFieldのどこにでも入力できます。

関連する問題