動的にフラッシュのActionScript 2でネストされたムービークリップへのアクセス
-
22-08-2019 - |
質問
私は、私がアクセスするネストされたムービークリップインスタンスを持っています。ムービークリップへのパスは(行と列と同様)は、2つの変数によって定義されます。
私はすでに動的にこのような親ムービークリップにアクセスしています
のeval( "行" + ActiveRow)
さて、私は、行の1(#)の子と呼ばれるLET(#)にアクセスしたい動的ます。
ここでは、(どちらも1作品)タスクを達成するために私の最高の推測です:
変数iは数;
のeval( "行" + ActiveRow + ".let" + I) または 評価( "行" + ActiveRow).eval( "う" + I)
あなたの努力と可能な解決策のおかげでたくさんの..
解決
あなたが試みることができる。
this["row" + ActiveRow]["let" + i]
良いだろう何かかわらずであるあなたがインスタンスを作成するときに、配列に入れた場合...ので、多分
var rowClips : Array = [];
for (var i : int = 0; i < 10; i++)
{
var row : MovieClip = this.createEmptyMovieClip("row" + i, i);
rowClips.push(row);
}
あなたはその後、
でそれを呼び出すことができますrowClips[i];
もちろん、状況に応じて、アレイにあなたのムービークリップを追加するに異なるロジックがあるかもしれませんが、基本的にそれはあなたのムービークリップへの参照を格納するために非常に良くな方法です。
他のヒント
あなたは親ムービークリップ、子供に単にインデックスにアクセスしたら。 ActionScriptの2は、動的な性質を調べるためeval
機能を使用する必要はありません。単にインデックスに所望の変数を対象と[]
(配列)演算子を使用します。
あなたの「行」のオブジェクトが現在のムービークリップのルートにある場合、あなたは、単に_root[ "row" + ActiveRow ][ "let" + i ]
を使用することができます。
eval("row"+ActiveRow)
経由で初期ムービークリップを持っているので、しかし、あなたは次のレベルをダウン得るために、このオブジェクトを使用することができます。例えば、eval("row" + ActiveRow)[ "let" + i ]
ます。
フラッシュは、JavaScriptから重く借り、およびJavaScriptのように、すべてのオブジェクトは、基本的にハッシュテーブルです。ドット演算子を使用して固定された文字列で[](配列)演算子を使用することと等価である。
まず、あなたが表形式のデータ構造を使用しているようなので、1つの簡単な方法は、2次元配列を作成し、そこにムービークリップを保存することであろうと思われます。その後、インデックスで検索を行うことができます。
また、ムービークリップ(nameプロパティを使用して)のそれぞれに名前を付け、getChildByNameを使用します。
すなわちgetChildByName( "行" + I).getChildByName( "列" + I)。