Flashゲーム講座 & アクションスクリプトサンプル集

 

フォーカスとは?

 


■フォーカスについて

 
ムービークリップボタンテキストフィールド、コンポーネントなどのインスタンスは、フォーカスに対応しています。
 
インスタンスにフォーカスを与えると、編集が可能な状態になります。
 
■テキストフィールドのフォーカス
 
例えば、テキストフィールドをクリックすると、フォーカスが与えられ、キーボード操作による入力が可能になります。
 
 
■フォーカスは1つ
 
フォーカスは、1つしか存在しません。
 
新しいインスタンスにフォーカスを当てた場合、以前の選択状態は解除されます。
 


 

フォーカスの変化を監視する

 

サンプルをダウンロード
 
 


■現在フォーカスのあるインスタンスを取得する

 
■現在アクティブなインスタンス取得する
 
Selection.getFocus() メソッドを使用します。
 
ドットシンタックス形式の、絶対パスの文字列が得られます。
 
絶対パスからインスタンスを取得するには、_root["絶対パス"] などを使用します。
 
Selection.getFocus( ) :String
引数 Voidなし。
戻り値 String現在アクティブなインスタンスのドットシンタックス形式の絶対パスを取得する。
フォーカスが存在しない場合、null
 
■取得例
 
現在フォーカスのあるインスタンスを取得する

// ------------------------------------------------------------
// 現在アクティブなインスタンスの、絶対パスを取得する
// ------------------------------------------------------------
var active_path = Selection.getFocus();

// 出力テスト
trace(active_path);

// ------------------------------------------------------------
// フォーカスが存在する
// ------------------------------------------------------------
if(active_path !== null){

	// 絶対パスから、インスタンスを取得する
	var active_instance = _root[active_path];

	// 出力テスト
	trace(active_instance);
}
 

■フォーカスの変化を監視する(全体的)

 
■フォーカスの変化を監視する(全体的)
 
Selection オブジェクトは、onSetFocus イベントリスナーに対応しています。
 
コールバック関数の仕様は、以下の通りです。
 
第01引数から、フォーカスが外れるインスタンスが得られます。
 
第02引数から、フォーカスが当たるインスタンスが得られます。
 
■使用例
 
フォーカスの変化を監視する (Flash 6 以降)

// ------------------------------------------------------------
// リスナー用オブジェクトを作成する
// ------------------------------------------------------------
var listener_obj = {

	// ------------------------------------------------------------
	// フォーカスが変化すると実行されるイベント
	// ------------------------------------------------------------
	onSetFocus: function (oldfocus , newfocus){
		trace("old:" + oldfocus);
		trace("new:" + newfocus);
	}

};

// ------------------------------------------------------------
// リッスンを開始する
// ------------------------------------------------------------
Selection.addListener(listener_obj);

// ------------------------------------------------------------
// リッスンを終了する
// ------------------------------------------------------------
//Selection.removeListener(listener_obj);
 

■フォーカスの変化を監視する(限定的)

 
■フォーカスの変化を監視する(限定的)
 
フォーカスに対応しているインスタンスは、以下のイベントプロパティが利用できます。
 
プロパティ 解説
onSetFocus フォーカスが当たると実行されるイベント
onKillFocus フォーカスが外れると実行されるイベント
 
■使用例
 
テキストフィールドのフォーカスの変化を監視する

// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドオブジェクトを作成し、_root に配置する
_root.createTextField("text_field",1,10,10,Stage.width-20,100);

// テキストフィールドの参照を取得
var tf = _root.text_field;

// 入力可能
tf.type = "input";

// 枠線を表示
tf.border = true;

// ------------------------------------------------------------
// フォーカスが当たると実行されるイベント
// ------------------------------------------------------------
tf.onSetFocus = function (oldFocus){
	trace("--- SetFocus ---");
	trace("new:" + this);
	trace("old:" + oldFocus);
};

// ------------------------------------------------------------
// フォーカスが外れると実行されるイベント
// ------------------------------------------------------------
tf.onKillFocus = function (newFocus){
	trace("--- KillFocus ---");
	trace("new:" + newFocus);
	trace("old:" + this);
};
 


 

フォーカスを設定する

 

サンプルをダウンロード
 
 


■インスタンスにフォーカスを与える

 
■インスタンスにフォーカスを与える
 
Selection.setFocus() メソッドを使用します。
 
Flash 自体がアクティブではない場合、失敗します。
 
Selection.setFocus( Object ) :Boolean
第01引数 Objectフォーカスを与えたいインスタンスを指定。ドットシンタックス形式の文字列の指定も可能。
戻り値 Boolean成功した場合 true。失敗した場合 false
 
■使用例
 
テキストフィールドにフォーカスを与える

// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドオブジェクトを作成し、_root に配置する
_root.createTextField("text_field",1,10,10,Stage.width-20,100);

// テキストフィールドの参照を取得
var tf = _root.text_field;

// 入力可能
tf.type = "input";

// 枠線を表示
tf.border = true;

// ------------------------------------------------------------
// マウスボタンを離した時に実行されるイベント
// ------------------------------------------------------------
_root.onMouseUp = function (){

	// ------------------------------------------------------------
	// フォーカスを与える(インスタンスを指定)
	// ------------------------------------------------------------
	var result = Selection.setFocus(tf);

	// 出力テスト
	trace(result);

	// ------------------------------------------------------------
	// フォーカスを与える(ドットシンタックスを指定)
	// ------------------------------------------------------------
	var result = Selection.setFocus("_root.text_field");

	// 出力テスト
	trace(result);

};
 

■インスタンスからフォーカスを外す

 
Selection.setFocus() メソッドの引数に null を指定します。
 
フォーカスを外す

// フォーカスを外す
Selection.setFocus(null);
 


 

テキストフィールドの編集位置を調べる

 

サンプルをダウンロード
 
 


■テキストフィールドの現在の点滅カーソル位置を取得する

 
Selection.getCaretIndex() メソッドを使用します。
 
現在フォーカスが当たっているテキストフィールドに関係があります。
 
Selection.getCaretIndex( ) :Number
引数 Voidなし。
戻り値 Number点滅カーソル位置が得られる。点滅カーソルが表示されていなければ、-1
 
テキストフィールドの現在の点滅カーソル位置を取得する

// テキストフィールドの現在の点滅カーソル位置を取得する
var index = Selection.getCaretIndex();

// 出力テスト
trace(index);
 

■テキストフィールドの現在の範囲選択の開始位置を取得する

 
Selection.getBeginIndex() メソッドを使用します。
 
現在フォーカスが当たっているテキストフィールドに関係があります。
 
Selection.getBeginIndex( ) :Number
引数 Voidなし。
戻り値 Number範囲選択の開始位置が得られる。範囲選択されていなければ、-1
 
テキストフィールドの現在の範囲選択の開始位置を調べる

// テキストフィールドの現在の範囲選択の開始位置を取得する
var index = Selection.getBeginIndex();

// 出力テスト
trace(index);
 

■テキストフィールドの現在の範囲選択の終了位置を取得する

 
Selection.getEndIndex() メソッドを使用します。
 
現在フォーカスが当たっているテキストフィールドに関係があります。
 
Selection.getEndIndex( ) :Number
引数 Voidなし。
戻り値 Number範囲選択の終了位置が得られる。範囲選択されていなければ、-1
 
テキストフィールドの現在の範囲選択の終了位置を調べる

// テキストフィールドの現在の範囲選択の終了位置を取得する
var index = Selection.getEndIndex();

// 出力テスト
trace(index);
 


 

テキストフィールドを範囲選択する

 

サンプルをダウンロード
 


■テキストフィールドを範囲選択する

 
Selection.setSelection() メソッドを使用します。
 
現在フォーカスが当たっているテキストフィールドに反映されます。
 
開始位置と終了位置を、逆に指定しても動作します。
 
第02引数で指定する終了位置は、取得対象に含まれません。
 
Selection.setSelection( 開始位置 , 終了位置 ) :Void
第01引数 Number開始位置を指定。(0 から始まる番号)
第02引数 Number終了位置を指定。(0 から始まる番号)
戻り値 Voidなし
 
テキストフィールドを範囲選択する (Flash 6 以降)

// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドオブジェクトを作成し、_root に配置する
_root.createTextField("text_field",1,10,10,Stage.width-20,100);

// テキストフィールドの参照を取得
var tf = _root.text_field;

// 入力可能
tf.type = "input";

// 枠線を表示
tf.border = true;

// テキストをセット
tf.text = "あいうえおかきくけこさしすせそたちつてとなにぬねの";


// ------------------------------------------------------------
// テキストフィールドにフォーカスを与える
// ------------------------------------------------------------
Selection.setFocus(tf);

// ------------------------------------------------------------
// テキストフィールドを範囲選択する
// ------------------------------------------------------------
Selection.setSelection(10 , 20);