- ベストアンサー
7秒後にフレーム5へ移動してムービークリップを再生
はじめまして。 FLASH初心者です。 レイヤー1~5の5フレームごとにムービークリップを配置しています。 レイヤー1の1フレーム目に配置してあるムービークリップが再生されて、7秒後にレイヤー2の5フレーム目に配置してあるムービークリップを再生し、(レイヤー3~5も同様に…)レイヤー5に配置してあるムービークリップの再生が終わったら、また7秒後にレイヤー1のムービークリップが再生される…といったように繰り返すにはどのようなActionScriptにすればよいのでしょう? 色々、試行錯誤したのですがうまくいきません。 どなたか教えて頂けませんか? よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 すみません。確かに動作が変になりますね。 > レイヤー1のムービークリップを再生→ > レイヤー2のムービークリップを再生→ > レイヤー1のムービークリップを再生…(繰り返す) というのは _root のタイムラインのレイヤーが次のようになっているとする場合ですよね。 1 5 レイヤー2 ・・□|○|●| レイヤー1 ・・□|●|○| ⇔ 繰り返す 私が書いたスクリプトの順で行くと, フレーム1にあるムービークリップでセットされた setInterval が, clearInterval(); でクリアされる前に, _root.gotoAndStop(2); が実行されて, _root が フレーム2 に移動してしまうので, clearInterval(); が実行されるべきフレーム1のムービークリップが存在しなくなってクリアされないので変なことになってしまうのです。 こういう場合は, 普通のケースとは違って, 先に clearInterval(); を実行して, その後 _root.gotoAndStop(2); を実行しなければなりません。 したがって, フレーム1 にあるムービークリップの最終フレームに書くスクリプトは 次のようになります。 ---------------------------------- stop(); go_2flame = setInterval(function () { clearInterval(go_2flame); _root.gotoAndStop(2); }, 7000); ---------------------------------- フレーム2 にあるムービークリップの最終フレームに書くスクリプトは 次のようになります。 ---------------------------------- stop(); go_1flame = setInterval(function () { clearInterval(go_1flame); _root.gotoAndStop(1); }, 7000); ---------------------------------- つまり, _root.gotoAndStop(○); clearInterval(○○); ↓訂正↓ clearInterval(○○); _root.gotoAndStop(○); という順の訂正変更です。 失礼しました。
その他の回答 (1)
- BlurFiltan
- ベストアンサー率91% (1611/1754)
setInterval を使えば良いと思います。 例えば, フレーム1にあるムービークリップの中のタイムラインの最終フレームをキーフレームにして, そこに次のように書きます。 ------------------------------------ // とりあえず停止 stop(); // setInterval をセット myID = setInterval(function () { // _root のタイムラインをフレーム2に進める _root.gotoAndStop(2); // この setInterval を解除 clearInterval(myID); // 7000ミリ秒(7秒後)に実行 }, 7000); ------------------------------------ > 7秒後にレイヤー2の5フレーム目に配置してあるムービークリップを再生 と書かれていらっしゃいますが, これだと意味がわからないので, → 7秒後にレイヤー2の2フレーム目に配置してあるムービークリップを再生 というように解釈したスクリプトです。
補足
ありがとうございます。 >7秒後にレイヤー2の2フレーム目に配置してあるムービークリップを再生 このように配置しなおして下記のスクリプトを書いてみたら2フレーム目のムービークリップは7秒後に再生されました。 stop(); go_2flame = setInterval(function () { _root.gotoAndStop(2); clearInterval(go_2flame); }, 7000); レイヤー1のムービークリップを再生→レイヤー2のムービークリップを再生→イヤー1のムービークリップを再生…(繰り返す) と、ずっと2つのムービークリップを再生し続けたい時は、レイヤー2 の2フレーム目に配置してあるムービークリップの最終フレームに stop(); go_1flame = setInterval(function () { _root.gotoAndStop(1); clearInterval(go_1flame); }, 7000); と書けばいいのでしょうか? このように書くと、1フレーム目のムービークリップが再生されないで7秒後に2フレーム目のムービークリップが再生されるのです…。 何度も申し訳ありませんが、よろしくお願いします。
お礼
ありがとうございます。 できました。 親切に教えてくださって、本当にありがとうございます。