• ベストアンサー

ムービークリップの名前に””(ダブルクオーテーション)は使えない?

Flashで1つのムービークリップを複製し、ムービークリップの名前に変数を挿入して使いたいのです。例えば、_root.namae1._xというソースがあれば「namae1」の「namae」の部分は固定して「1」の部分に3だったり10だったりといった数字を代入したいのです。これを行うには"namae"+iのように変数iを用意してここに毎回違う数字が入るようにすればいいのですが、問題がありました。 先ほどのソースであれば、_root."namae"+1._xのような具合になるわけですが、ムービークリップの名前にダブルクオーテーションを使っていることが悪いようで、エラーが発生してしまいます。しかしこれ以外に固定された名前と変動する変数を結合して一つの文字列にする方法は無いと思います。なんらかの形でダブルクーテーション記号は出てきてしまうはずです。 これの対処方法を教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.2

ActionScript では、文字列を変数やインスタンスへの参照に変換することができます。 変換には eval 関数か配列演算子 [ ] を使いますが、eval 関数は Flash Player 6 からは制限が付きました(式の左辺で使うとエラーになる)ので、[ ] 演算子の方が応用が利きます。 例えば、ステージにムービークリップ namae1 ~ 5 があるとします。 for ループと [ ] 演算子を使って、これらの _x プロパティを「出力」パネルに trace アクションで表示するスクリプトは、 (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)  for( i = 1 ; i <= 5 ; i++ )  {   trace( _root[ "namae" + i ]._x );  } このようになります。 [ ] を使った変換では、階層1つ分の指定につき1組の [ ] を用意します。 例えば、先の namae1 ~ 5 が clip というムービークリップの中に入れ子になっている場合は、  for( i = 1 ; i <= 5 ; i++ )  {   trace( _root[ "clip" ][ "namae" + i ]._x );  } となります。  _root[ "clip.namae" + i ]._x は、エラーにはなりませんが、正しく参照できません。 なお、外側に出ている _root の代わりに、this や _parent といった相対表現を使うこともできます。 相対表現にする場合は、this や _parent が指す対象にご注意ください。

その他の回答 (1)

  • perse
  • ベストアンサー率74% (113/152)
回答No.1

hensu = "namae"; _root[hensu+1]._x = 300; で_root上にあるnamae1というMCのx座標が300になります。

関連するQ&A

専門家に質問してみよう