深度について
・ | 深度とは? |
・ | インスタンスの深度を変更する |
・ | インスタンスの深度を取得する(Flash 6 以降) |
・ | 深度を指定してインスタンスを取得する(Flash 7 以降) |
・ | 最前面となる深度を取得する(Flash 7 以降) |
深度とは?
■深度とは?
Flash 画面上に配置されているオブジェクトの、表示優先度(奥行き)を数値化したものを、深度といいます。
深度が大きいほど、手前に表示されます。
深度が小さいほど、奥に表示されます。
■静的に配置したオブジェクトの深度について
静的に配置したオブジェクトの深度は、マイナス値のどこかに自動的に割り振られます。
深度のマイナス値は、システムで使われる領域と考えられます。
深度のプラス値は、スクリプトから自由に使える領域と考えられます。
■静的に配置したオブジェクトの深度を変更した場合
静的に配置したオブジェクトの深度を変更すると、システムの制御から切り離されます。
配置したキーフレームの終端を過ぎても、システムから破棄されず、画面にインスタンスが残り続けます。
任意のインスタンスを破棄したい場合は、
親ムービークリップが消滅するのを待つか、removeMovieClip() 関数を使用します。
■任意のインスタンスを破棄する
任意のインスタンスを破棄するには、removeMovieClip() 関数を使用します。
引数に、破棄したいインスタンスを指定します。
深度が 0 より小さい場合、インスタンスを破棄することはできません。
ムービークリップを破棄する (深度が 0 以上の場合)
// ------------------------------------------------------------
// ムービークリップ
// ------------------------------------------------------------
// ムービークリップオブジェクトを作成し、_root に配置する(深度 0)
var mc = _root.createEmptyMovieClip ( "movie_clip" , 0 );
// 矩形をレンダリング
mc.lineStyle (5, 0xAA0000, 100);
mc.beginFill (0xFF4444, 100);
mc.moveTo ( 0 , 0 );
mc.lineTo ( 0 , 200 );
mc.lineTo ( 200 , 200 );
mc.lineTo ( 200 , 0 );
mc.endFill();
// ------------------------------------------------------------
// インスタンスを破棄する
// ------------------------------------------------------------
removeMovieClip(mc);
テキストフィールドを破棄する (深度が 0 以上の場合)
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// テキストフィールドオブジェクトを作成し、_root に配置する(深度 0)
_root.createTextField("text_field",0,100,100,200,200);
// テキストフィールドの参照
var tf = _root.text_field;
// テキストフィールドの設定
tf.background = true;
tf.backgroundColor = 0xFF8888;
tf.text = "TextField";
// ------------------------------------------------------------
// インスタンスを破棄する
// ------------------------------------------------------------
removeMovieClip(tf);
インスタンスの深度を変更する
サンプルをダウンロード
■インスタンスの深度を変更する
■深度を指定してムービークリップを移動する
深度を指定してインスタンスを移動するには、swapDepths() メソッドを使用します。
任意のムービークリップから呼び出します。
引数に数値を指定すると、その深度に移動します。
指定した深度にすでにインスタンスが存在する場合は、そのインスタンスと順序が入れ替わります。
深度の指定できる範囲は、-16384 から 1048575 までです。
MovieClip.swapDepths ( 深度 ) : Void
第01引数 | Number | 深度 |
戻り値 | Void | なし |
ムービークリップ "mc" の深度を 10 に変更する。
// ムービークリップ mc の深度を 10 に変更する
mc.swapDepths( 10 );
■別のインスタンスと順序を入れ替える
別のインスタンスと順序を入れ替えるには、swapDepths() メソッドを使用します。
任意のムービークリップから呼び出します。
引数に「別のインスタンス」を指定すると、そのインスタンスと順序が入れ替わります。
MovieClip.swapDepths ( インスタンスの参照 ) :Void
第01引数 | Object | インスタンスの参照 |
戻り値 | Void | なし |
ムービークリップ "mc_a" とムービークリップ "mc_b" の順序を入れ替える。
// ムービークリップ mc_a と、ムービークリップ mc_b の順序を入れ替える
mc_a.swapDepths( mc_b );
インスタンスの深度を取得する(Flash 6 以降)
サンプルをダウンロード
■インスタンスの深度を取得する
任意のインスタンスの深度を取得するには、getDepth() メソッドを使用します。
任意のインスタンスから呼び出します。
ムービークリップ "mc" の深度を調べる
// ムービークリップ mc の深度を取得する
var depth = mc.getDepth();
// 出力テスト
trace(depth);
深度を指定してインスタンスを取得する(Flash 7 以降)
■深度を指定してインスタンスを取得する
深度を指定してインスタンスを取得するには、getInstanceAtDepth() メソッドを使用します。
親ムービークリップから呼び出します。
MovieClip.getInstanceAtDepth ( 深度 ) : MovieClip
第01引数 | Number | 深度 |
戻り値 | MovieClip | 指定した深度にインスタンスが存在すればその参照。存在しなければ undefined。 |
_root の 深度 50 に存在するインスタンスを取得する
// ------------------------------------------------------------
// テキストフィールド
// ------------------------------------------------------------
// 深度 50 に、テキストフィールドオブジェクトを作成し、_root に配置する
_root.createTextField("text_field",50,100,100,200,200);
// テキストフィールドの参照
var tf = _root.text_field;
// テキストフィールドの設定
tf.background = true;
tf.backgroundColor = 0xFF8888;
tf.text = "TextField";
// ------------------------------------------------------------
// 深度を指定してインスタンスを取得する
// ------------------------------------------------------------
// 深度 50 にあるインスタンスを取得する
var obj = _root.getInstanceAtDepth(50);
// 出力テスト
trace(obj);
最前面となる深度を取得する(Flash 7 以降)
サンプルをダウンロード
■最前面となる深度を取得する
最前面となる深度を取得するには、getNextHighestDepth() メソッドを使用します。
親ムービークリップから呼び出します。
ムービークリップ内で、『一番手前に存在するインスタンス』の深度に + 1 した値が得られます。
_root 上で最前面となる深度を調べる
// _root 上で最前面となる深度を取得する
var depth = _root.getNextHighestDepth();
// 出力テスト
trace(depth);