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

 

深度とは?

 


■深度とは?

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