- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:forとduplicateMovieClip)
forとduplicateMovieClipを使ったムービー作成方法
このQ&Aのポイント
- for文とduplicateMovieClipを使ってムービーを作成する方法について質問しています。
- 質問者はアンケート用紙のようなムービーを作りたいと考えており、for文を使ってMCを複製し、ダイナミックテキストと変数を設定しています。
- しかし、クリックした項目にチェックマークを表示する際に、すべての項目でHflagが4と出力されてしまう問題が発生しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> Hflag = i; まず、上記の代入式は"ASを記述した階層のHflag"に、 "ASを記述した階層のi"を代入するというものです これは変数を利用しているので、"for文中のi"が固定して代入されるわけではありません for文の条件がi<=3となっていて、次の動作がi++となっていることで、 iが4になった時点でfor文を抜けます つまり毎回"onReleaseアクション時点でのi"(=forを抜けた後のi)を 参照するということにより 4 という結果になってしまうのです 各MC複製中にiに基づいた番号を保持させたい場合は、 そのMCあたりに変数を作りその時点でのiを代入させておくことです 例 : _root["MC"+i].HT_answer = HanswerBox[i]; _root["MC"+i].MyFlag = i;//ここで、その時点でのiを代入しておく _root["MC"+i].onRelease = function(){ Hflag = this.MyFlag; //function内でthisがなかったらASを記述した階層から参照 //よって Hflag は ASを記述した階層のHflag //function内のthisはアクションを行っているオブジェクトから参照 //よって this.MyFlagは _root["MC"+i]のMyFlag trace(Hflag); } :
お礼
suzukiさん、書き込みありがとうございます。 順を追って詳細に解説していただき、理解できました。 ターゲットパスの階層の整理ができていないとこういう間違いをしてしまうというかんじのようですね。 大変勉強になりました。 ありがとうございました。