• ベストアンサー

キー入力か時間経過で次フレームへ

ある画像を表示していて、 一定時間(仮に10秒)経過するか もしくはキーボードの入力があった時に 次の画像に移り、また同様に 時間経過か入力で次の... という動作をしたいのですが、 どうもうまくいきません。 どう組めばいいのでしょうか。

  • Flash
  • 回答数1
  • ありがとう数3

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

  • ベストアンサー
noname#35109
noname#35109
回答No.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(); } } ----------------------------------- 以上,一例です。

archerin
質問者

お礼

バージョンを書き忘れていました... Flash MXです。 結局、お答えいただいた setInterval を使う事で解決しました。 回答ありがとうございました。

関連するQ&A

  • パスワードを設定すると、一定時間入力が遅れると起動できなくなる

    VISTAでパスワードを設定すると、パスワード入力画面で一定時間経過後、「パスワードが正しくありません」と表示され以後キーボードからの入力を受け付けなくなってしまいます。 一定時間とは4秒くらいで、この間に正しいパスワードを入力するか、パスワードの設定をなくしてしまえば、問題なく動作しています。 また、誤ったパスワード入力でも、その後一切キーボードからの入力を受け付けず、電源スイッチのチョイ押しでのシャットダウンすることでの再度起動以外の脱出ができなくなってしまいます。 同様の現象から復帰された方のレポートお願い申しあげます。 富士通LX70Y/D、VistaHomePremium Core2DuoE4500 2.2GHz メモリ2G

  • 555を使用したタイマー回路で入力信号が一定時間経過でONとなる回路。

    555を使用したタイマー回路で入力信号が一定時間経過でONとなる回路。途中で入力が無くなればリセットされる事 こんな使い方教えて下さい。 よくある回路は瞬時スイッチを入れると一定時間経過後に動作する回路が多いですが・・・ できるだけ簡単な回路で構成したいのでどなたか教えて下さい。

  • パスワードを設定すると、一定時間で起動できなくなる。

    VISTAでパスワードを設定すると、パスワード入力画面で一定時間経過後、「パスワードが正しくありません」と表示され以後キーボードからの入力を受け付けなくなってしまいます。 一定時間とは4秒くらいで、この間に正しいパスワードを入力するか、パスワードの設定をなくしてしまえば、問題なく動作しています。 また、誤ったパスワード入力でも、その後一切キーボードからの入力を受け付けず、電源スイッチのチョイ押しでのシャットダウンすることでの再度起動以外の脱出ができなくなってしまいます。 同様の現象から復帰された方のレポートお願い申しあげます。 富士通LX70Y/D、VistaHomePremium Core2DuoE4500 2.2GHz メモリ2G

  • 経過時間表示

    お世話になります。 System.nanoTime()を使い処理の経過時間を表示したいのですが、最終的にこれをナノ秒ではなく秒で表示したいのですが、0秒と表示されてしまいます。 long start = System.nanoTime(); //処理 long end = System.nanoTime(); System.out.println((end-start)/1000000000); 処理経過時間はナノ秒でだいたい8000000~10000000ナノ秒です。 ですので、10^‐9をかけて秒に直して0.008~0.01秒と表示させようとしたのですが、0秒と表示されます。 どのようにすればSystem.nanoTime()を使い0.008秒と表示できますでしょうか?宜しくお願いします。

    • ベストアンサー
    • Java
  • 1/10秒単位で経過時間を測りたい

    Excell VBA で 1/10 秒単位で経過時間を表示する方法を教えてください。 現在は次の書式を使っているので、1秒単位でしか表示されません。 MsgBox "所要時間 : " & Format(Now - StartTime, "hh:mm:ss") StartTime は計測開始時刻です。

  • 動画の時間経過に合わせて同期させたいものがあります。

    よろしくお願いします。 現在LAN内でストリーミングサーバを構築していますが、その近くに写真やテキストを置き、 動画の経過時間に合わせてそれらが同期するようにしたいのですが、 そんなこと可能なのでしょうか。 フレームに分けて、写真やテキスト部を一定時間過ぎるとジャンプするようにしてみましたが、 それだと動画を一時停止などした時に合わなくなってしまいました。。 あくまでストリーミングの経過時間(2分10秒になったら、とか)によって同期させたいのです。 ヒントになるようなものだけでもご教授頂けたらと思います。お願いします。

  • 経過時間が計算できません。

    エクセルのマクロで困っています。 エクセルファイルを閉じる際に、 Cells(1, 1).Value = Now() としてファイルを閉じた時間の記録としています。 次にファイルを開いた時に前回利用時からの 経過時間を表示しようと考えています。 例:「前回利用時から、85 時間経過しています」 1時間未満は切り捨てて時間単位で表したいです。 そこで Cells(2, 1).Value = Now() - Cells(1, 1).Value とすると 「1900/1/4 1:00:24」となってしまいます。 表示形式を[h]と指定すれば、「97」と表示され、 一応経過時間を時間単位で表示してくれます。 ただ、この「97」という数字を他の変数に渡すには どのようにしたらよいのでしょう?

  • 経過時間について

    こんにちは 経過時間を0から表示して、ボタンが押されたら経過時間の計測・表示をストップし次のフレームに行き、また0から経過時間を表示したいのですが、どうすればいいでしょうか? 時間を表示させるdisptime.textとbtnというボタンをステージに配置しています。↓いろいろ試してみたのですが、フレーム移動した際に経過時間を0から表示させる方法がわかりません。。 flash8を使っています。 stop(); startflag=true; this.onEnterFrame=function(){ if(startflag==true){ starttime=getTimer(); keika=getTimer();-starttime; disptime.text=Math.floor(keika/1000); } }; btn.onRelease = function(){ startflag=false; nextFrame(); };

    • ベストアンサー
    • Flash
  • 一定時間が経過した後のフレーム移動について

    Flash初心者です。うまく質問したいことが伝わるか心配ですが、どうぞ宜しくお願いします。 タブメニュー型のムービーを作成していまして、10秒経過すると次のタブが開き、 また10秒すると次のタブが開く…。このループです。 タブの数は4つ。1フレームごとにそれぞれのタブが開いているように画像で見せておいて(計4フレームを使用)、 スクリプトで10秒の間隔をおき、次のフレームに移動させる仕組みになっています。 タブにはクリックできるようにボタンが仕込んであり、クリックするとムービーの流れ(再生されている順)に関係なく、 そのタブに移動します(2つ目のタブなら2フレーム目を再生)。 (タブの部分のテキスト、タブが開いたときに表示されるバナー画像は外部読み込みになっています。 ただ、この外部読み込みに関しては質問の内容に影響しないと思いますので詳しくは説明しないでおきます。) スクリプトは下記のとおりです。(注:教えて!gooにあったものを使わせていただきました。) ※1フレーム目 --------------------------------------------------------------------- this.stop(); timerID = setInterval(startMovie, 10000); function startMovie() { gotoAndPlay(2); clearInterval(timerID); } ※2フレーム目 --------------------------------------------------------------------- this.stop(); timerID2 = setInterval(startMovie2, 10000); function startMovie2() { gotoAndPlay(3); clearInterval(timerID2); } ※3フレーム目 --------------------------------------------------------------------- this.stop(); timerID3 = setInterval(startMovie3, 10000); function startMovie3() { gotoAndPlay(4); clearInterval(timerID3); } ※4フレーム目 --------------------------------------------------------------------- this.stop(); timerID4 = setInterval(startMovie4, 10000); function startMovie4() { gotoAndPlay(1); clearInterval(timerID4); } これでちゃんと10秒経過すると次のフレームに移動し、それがループされるのですが 問題は、途中で順に再生されているタブと違うタブをクリックしたときに起こります。 一度、その再生順がクリックすることによって変わってしまうと、元々の『10秒後に次のフレームへの移動』の動きと、 クリックされたタブから『10秒後に次のフレームへの移動』の動きが重複しているようなんです。 ちゃんと確認できたわけではありませんが、複数回これを繰り返すと4つのタブがかなりの速度でパッパッパと遷移し、 まともに見ることすらできないものになってしまいます。 解決したいのは、クリックしたタブ(移動したフレーム)から新たに10秒がカウントされ、10秒後には次のフレームに移動し 10秒経過する前に他のタブをクリックしたときでも、そのタブ(フレーム)に移動してからまた新たに10秒がカウントされる…。 このようにするにはどうしたらいいでしょうか? どうぞご教示ください。

  • C言語で一定時間実行し、時間が経過したら処理を終わらせるには?

    今C言語でOpenGLを用いて図形を表示させるプログラムを書いています。 一定時間(例えば5秒)だけ画像を表示させ、 時間が過ぎらたらその画像をけし、 何も描いてないウィンドウだけ表示させるようにさせたいのですが、 プログラミングは全くの初心者で、どうすればいいのかわからず 困っています。 どなたか教えていただけないでしょうか。 出来れば関数名だけでなく、サンプルプログラムなどで 教えていただければ幸いです。 すみません、宜しくお願いします。