- ベストアンサー
キー入力か時間経過で次フレームへ
ある画像を表示していて、 一定時間(仮に10秒)経過するか もしくはキーボードの入力があった時に 次の画像に移り、また同様に 時間経過か入力で次の... という動作をしたいのですが、 どうもうまくいきません。 どう組めばいいのでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
どんな方法でも良いというか, 色々考えられますね。 色々方法はありますが, メインのムービーが別に動いていて, そこで写真を入れ替えるなどの別の動作をさせる場合は, ムービークリップを作って, そのムービークリップに写真を表示させるというのはたいてい共通した方法だと思います。 ムービークリップを作って, ムービークリップ内の各フレームに各写真を入れて, キーが押されたときもしくは10秒経ったときに, そのムービークリップ内のフレームを次のフレームに進ませるのはいかがでしょうか。 以下は Flash MX 以降のバージョンなら使えるスクリプトです。 原理はこんな感じです。 写真を入れたムービークリップに書きます。 ------------------------------------ onClipEvent (load) { //とりあえずストップ this.stop(); //10000ミリ秒後(10秒後)に以下を実行 ID1 = setInterval(function () { //次のフレームへ nextFrame(); }, 10000); } //何かキーが押されたとき onClipEvent (keyDown) { //次のフレームへ nextFrame(); } ----------------------------------- setInterval が Flash MX 以降のバージョンでないと使えません。 setInterval も色々書き方がありますが, 一応ココ↓で解説されている書き方をしています。 http://www.fumiononaka.com/TechNotes/Flash/FN0304001.html clearInterval(ID1); で解除できます。 しかし上のスクリプトだと, 最終フレームに来たときに,次のフレームがないので,最終フレームのまま止まってしまいます。 だから, 最終フレーム以外の場合は,次のフレームへ。 最終フレームの場合は最初のフレームへ戻る。 という具合に書きかえると次のようになります。 ----------------------------------- onClipEvent (load) { //とりあえずストップ this.stop(); //10000ミリ秒後(10秒後)に以下を実行 ID1 = setInterval(function () { // 今のフレームが総フレーム数のとき if (_currentframe == _totalframes) { // 最初のフレームへ gotoAndStop(1); // それ以外は } else { // 次のフレームへ nextFrame(); } // clearInterval(ID1); }, 10000); } //何かキーが押されたとき onClipEvent (keyDown) { //今のフレームが総フレーム数のとき if (_currentframe == _totalframes) { //最初のフレームへ gotoAndStop(1); //それ以外は } else { //次のフレームへ nextFrame(); } } ----------------------------------- 以上,一例です。
お礼
バージョンを書き忘れていました... Flash MXです。 結局、お答えいただいた setInterval を使う事で解決しました。 回答ありがとうございました。