一回も披露したことのない豆知識

最近、FlashMXを初めまして、ActionScriptを利用してのゲーム作りにチャレンジしています。

duplicateMovieClip関数を使って、MovieClipを複製し、なおかつそれぞれに変数を渡し、その変数によってMovieClipの反応を変える。
という流れの処理を作ろうとしました。

が、それぞれのMovieClipに変数を受け渡すところで、詰まってしまいました。

MovieClip間で変数をやり取りするには、どうしたら良いでしょうか?

誰か教えてください。お願いします。


参考にならないかもしれませんが一応、問題部分のソースを載せます。

var i = _root.ItemList.length + 1;
while (--i) {
  root.ItemNum++;
  var s = "Items"+_root.ItemNum;
  duplicateMovieClip(Items,s,_root.ItemNum);
  setProperty (s, _x, 50*i-20);
  setProperty (s, _y, 30);
  // ここでsに変数を受け渡したい。
}

A 回答 (1件)

ややご質問の意図がわかりにくいのですが...。


推測するに、whileループ内でsがMovieClipでなく文字列であるため
s.theVar = "値";
のような指定ができない、ということでしょうか。
であれば以下のような形で可能です。
eval(s).theVar = "値";

ですが、個人的に好みなのは以下のような書式です。バージョン4以前の「アクション」の書式からバージョン5以降の「ActionScript」の書式に変更しています。
----
while (--i) {
_root.ItemNum++;
var s = "Items"+_root.ItemNum;
var the_mc = Items.duplicateMovieClip(s, _root.ItemNum);
the_mc._x = 50*i-20;
the_mc._y = 30;
the_mc.theVar = "値";
}
----

回答がご質問の意図とずれているようでしたら補足をお書きください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!

そうです!!そういうことです!!!!
というか、そういうことだったんですか!!

sがMovieClipでなく文字列であるため
出来なかったんですね(--;

そこにさえ気付いていませんでした(汗)
分かりにくい質問をしてしまったにもかかわらず、分かりやすくかつ、的確な回答をしてくださって、本当にありがとうございました。助かりました。

もっと基礎学習頑張りますm(_ _)m

お礼日時:2004/06/09 15:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!