• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【action script】複数のMCを・・・)

【ActionScript】複数のMCをクリックした時に同じ動きをまとめる方法

このQ&Aのポイント
  • Flash8 actionscript2.0環境で、10こ程度のムービークリップをそれぞれクリックした時に同じ動きをさせる方法を教えてください。
  • ムービークリップの数を増やすかもしれないため、ムービークリップの数分書くのは大変です。一つにまとめる方法を教えてください。
  • 試行錯誤してもうまくいかず、なぜiが11となるのかわからない状況です。パスを指定する方法や、正しいやり方を教えてください。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1です。 > なぜfunctionのあとだとi=11になるのでしょうか? Flash の ActionScript に限らず for 文で i を変えれば普通はそうなります。 それがルール(言語仕様)です。 ActionScript 限定で話をすると 例えば次の文をフレームに書いたとします。 --------------------- for (i=1; i<=10; i++) { trace(i); } trace(i); --------------------- 上の文はパブリッシュ時に 次のように変換されて処理されます。 --------------------- i = 1; while(i<=10){ trace(i); i++; } trace(i); --------------------- ※ HugFlash の HugDimension モードでの 自作SWF 解析結果 for文 を使って書いても, 結局内部マシン語的には while文 と同値のものとして扱われるということです。 またその while文 には上のように変換されるので i は 11 となって for文 から抜けます(while文 から抜けます)。 ================== > onRelease時に > > _global.hensuu=i > //iはクリックしたmcの番号 > > などとしたい場合はどうすれば可能なのでしょうか? それは #1 の回答自体がヒントになっていると思いますが, 各 MC 内に i を固定してしまえば良いでしょう。 ---#1のスクリプトを変更---------------- for (i=1; i<=10; i++) { _root["mc"+i].num = i; _root["mc"+i].onRelease = function() { this.kai_mc.nextFrame(); trace(this.num); }; } ------------------------------------- 「制御」→「ムービープレビュー」で 各 MC クリックをすれば動作検証できると思います。 その他,私の最近の回答より 「スクリプトをまとめて書くには」 http://okwave.jp/qa/q6341073.html

pekopeko0990
質問者

お礼

重ねてご丁寧に説明頂きましてありがとう御座います。 それぞれのMC内に変数を入れてしまうことで固定するということですか…大変勉強になりました。 whileに変換されるなど色々内部的に変換されてるんですね。自分で横道にそれて色々やってみて楽しかったです。 初心者なものでwhile文も使ったことなかった為いろいろと勉強になりました。 過去に回答されてる分も拝読させて頂きます。 深夜遅くにもかかわらず回答頂きまして本当にありがとう御座いました。

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

次のような感じでできると思います。 for(i=1; i<=10; i++){ _root["mc"+i].onRelease=function(){ this.kai_mc.nextFrame(); }; }

pekopeko0990
質問者

お礼

回答ありがとうございます。 なるほどthisを使うとできるんですね。 すこしずれてしまいますけどなぜfunctionのあとだとi=11になるのでしょうか? onRelease時に _global.hensuu=i //iはクリックしたmcの番号 などとしたい場合はどうすれば可能なのでしょうか? 重ねての質問ですが回答いただければ幸いです

関連するQ&A

専門家に質問してみよう