evalを使用せずに文字列を使用してアクションスクリプトでムービークリップへの参照を取得するより良い方法はありますか

StackOverflow https://stackoverflow.com/questions/123979

  •  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];
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top