evalを使用せずに文字列を使用してアクションスクリプトでムービークリップへの参照を取得するより良い方法はありますか
-
02-07-2019 - |
質問
すべて似たような名前を持つムービークリップを大量に作成し、他のイベントの後、次のような文字列を構築しました。
var clipName = "barLeft42"
これは、「thing」と呼ばれる別のムービークリップ内に保持されます。
以下を使用して参照を取得できました。
var movieClip = Eval( "_root.thing." + clipName )
しかし、それは気分が悪いです - もっと良い方法はありますか?
解決
ムービークリップは、actionscript のコレクションです (ほとんどのクリップと同様、JavaScript と同様に、すべては基本的にキーと値のペアです)。次のように、角括弧とキー名の文字列を使用して、コレクションにインデックスを付けることができます。
_root.thing[ "barLeft42" ]
それでうまくいくはずです...
他のヒント
非推奨の使用を避けるより良い方法 eval
, 、角括弧でインデックスを付けることです。
var movieClip = _root.thing[ "barLeft42" ]
ただし、最善の方法は、作成したクリップへの参照を保持し、名前ではなく参照によってアクセスすることです。
var movieClipArray = new Array();
for (var i=0; i<45; i++) {
var mc = _root.thing.createEmptyMovieClip( "barLeft"+i, i );
// ...
movieClipArray.push( mc );
}
// ...
var movieClip = movieClipArray[ 42 ];
括弧を使用して、その中に変数を含めることができます。したがって、それらすべてをループしたい場合は、次のようにすることができます。
for (var i=0; i<99; i++) {
var clipName = _root.thing["barLeft"+i];
}
所属していません StackOverflow