評価のない文字列を使ってactionscript内のムービークリップへの参照を取得するより良い方法はありますか?


1

私はすべて同じような名前のムービークリップを作成しました。次のようになります。

var clipName = "barLeft42" 

「thing」という別のムービークリップの中に保持されます。

私が使用して参照のホールドを取得することができました:

var movieClip = Eval("_root.thing." + clipName) 

しかし、それは悪い感じている - より良い方法はありますか?

4

ムービークリップは、actionscriptのコレクションです(javascriptのほとんどと同様、すべてが基本的にキーと値のペアです)。 、あなたのためのトリックを行う必要があります

_root.thing[ "barLeft42" ] 

...


0

非推奨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 ]; 

0

あなたは、ブラケットを使用して、あなたがそれらを介してループしたかったので、もし...その中の変数を含めることができ、すべてのあなたはこれを行うことができます。

for (var i=0; i<99; i++) { 
    var clipName = _root.thing["barLeft"+i]; 
}