テキストの選択と操作

Flash Player 9 以降、Adobe AIR 1.0 以降

ダイナミックまたは入力テキストを選択できます。 TextField クラスのテキスト選択プロパティとメソッドは、インデックス位置を使用して操作するテキストの範囲を設定するので、コンテンツがわからない場合でも、プログラムによってダイナミックまたは入力テキストを選択することができます。

注意: Flash Professional では、選択可能にするオプションを静止テキストフィールドで選択した場合、表示リストにエクスポートされて配置されるテキストフィールドは、通常のダイナミックテキストフィールドになります。

テキストの選択

flash.text.TextField.selectable プロパティはデフォルトで true になっています。したがって、 setSelection() メソッドを使用してプログラムでテキストを選択することができます。

例えば、ユーザーがテキストフィールドをクリックしたときにそのテキストフィールドの内部の特定のテキストが選択されるように設定することができます。

var myTextField:TextField = new TextField(); 
myTextField.text = "No matter where you click on this text field the TEXT IN ALL CAPS is selected."; 
myTextField.autoSize = TextFieldAutoSize.LEFT; 
addChild(myTextField); 
addEventListener(MouseEvent.CLICK, selectText); 
 
function selectText(event:MouseEvent):void 
{ 
    myTextField.setSelection(49, 65); 
}

テキストフィールド内のテキストが最初に表示されるときにそのテキストが選択されるようにする場合も、同様にして、テキストフィールドが表示リストに追加されるときに呼び出されるイベントハンドラー関数を作成します。

ユーザー選択テキストのキャプチャ

TextField の selectionBeginIndex プロパティと selectionEndIndex プロパティを使用すると、ユーザーが現在選択している内容をキャプチャできます。これらのプロパティは “読み取り専用” のため、プログラムに従ってテキストを選択するように設定することはできません。また、入力テキストフィールドでは caretIndex プロパティを使用できます。

例えば、次のコードではユーザー選択テキストのインデックス値をトレースしています。

var myTextField:TextField = new TextField(); 
myTextField.text = "Please select the TEXT IN ALL CAPS to see the index values for the first and last letters."; 
myTextField.autoSize = TextFieldAutoSize.LEFT; 
addChild(myTextField); 
addEventListener(MouseEvent.MOUSE_UP, selectText); 
 
function selectText(event:MouseEvent):void 
{ 
    trace("First letter index position: " + myTextField.selectionBeginIndex); 
    trace("Last letter index position: " + myTextField.selectionEndIndex); 
}

選択範囲に TextFormat オブジェクトのプロパティのコレクションを適用すると、テキストの外観を変更することができます。選択されているテキストに TextFormat のプロパティのコレクションを適用する方法について詳しくは、 テキストフィールド内のテキストの範囲のフォーマット を参照してください。