経過時間の計測・表示方法について

このQ&Aのポイント
  • 経過時間を0から表示して、ボタンが押されたら経過時間の計測・表示をストップし次のフレームに行き、また0から経過時間を表示する方法を教えてください。
  • Flash8を使って経過時間を計測し、表示させる方法です。disptime.textとbtnというボタンを使って経過時間を表示しています。フレーム移動した際に経過時間を0から表示する方法がわかりません。
  • 経過時間の計測と表示を行い、ボタンが押されたら計測を停止し次のフレームに移動し、再び経過時間を0から表示する方法をご教示ください。Flash8を使用しています。
回答を見る
  • ベストアンサー

経過時間について

こんにちは 経過時間を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
  • 回答数1
  • ありがとう数2

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

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

意味不明な部分(=startflagの存在)や, 完全に不要だと思われる部分(=starttime 関係)のスクリプトが含まれていますね。 とりあえず, 完全に不要だと思われる部分を削除したシンプルなスクリプトを書いておきます。 ---不要な starttime 関係を削除したスクリプト--- stop(); startflag = true; this.onEnterFrame = function() { if (startflag == true) { keika = getTimer(); disptime.text = Math.floor(keika/1000); } }; btn.onRelease = function() { startflag = false; nextFrame(); }; ------------------------------------- これを元に, ボタン「btn」をクリックしたとき, 次のフレームに行って 0 からカウントを始めるものに作り替えます。 ------------------------------------- stop(); startflag = true; // スタート時の時刻を取得 startTime = getTimer(); this.onEnterFrame = function() { if (startflag == true) { // 現在の時間-スタート時間を取得 keika = getTimer()-startTime; disptime.text = Math.floor(keika/1000); } }; btn.onRelease = function() { // 必要↓?(これがあると動かないので取ります) //startflag = false; nextFrame(); // startTime を再設定 startTime = getTimer(); }; ------------------------------------- たとえば T1 = getTimer(); だと, これをいつ実行しても常にムービーが開始されてからの時間が T1 に代入されてしまいます。 T1 = getTimer() - 測定開始時間; にしておくと, 測定開始時間からの経過時間が T1 に代入されます。 結局, 測定を開始したいときに,そのときの時間を getTimer() で求めておいて, そこから現在の差分を求めるようにしておけば, 測定開始時間から現在の時間が求められます。 すごく単純に書くとこれだけのことです↓ ------------------------------ stop(); T0 = getTimer(); this.onEnterFrame = function() { disptime.text = getTimer()-T0; }; btn.onRelease = function() { T0 = getTimer(); }; ------------------------------ これが原型で, あとは秒単位表示にしてみたり,フレーム移動を加えればできると思います。

supertentu
質問者

お礼

回答ありがとうございました! getTimerの代入や足し算引き算って難しいですね><

関連するQ&A

  • Keyを押している時間によって・・・

    ゴルフゲームでKeyを押している時間によって、飛距離が変わるゲームがあります。 同じような操作機能を作りたいと思い、質問させて頂きました。 どうぞよろしく御願いします。 途中まで書いてみたのですが・・・getTimerとか使うんでしょうか? _root.startFlag = false; start_btn.onPress = function(){ if(_root.startFlag == false){ _root.startFlag = true; _root.startTime = getTimer(); } _root.start_btn.onRelease = function() { _root.startFlag = false; } } this.onEnterFrame = function(){ if(_root.startFlag == true){ if(ms<3000){ ms =getTimer() - _root.startTime; _root.dispTime = ms / 1000; this.createEmptyMovieClip("view_mc",0); view_mc.lineStyle(5,0xFF0000,100) view_mc.moveTo(0,100) view_mc.lineTo(ms/25,100) } if(ms>3000){ms=3000} }; }

    • ベストアンサー
    • Flash
  • gotoAndPlayされないです

    はじめてFlashを作ります。 "ATTACK1"と"ATTACK2"のフレームを0.2秒の間隔で10回交互に表示したあと、 "ATTACK3"と"ATTACK4"のフレームをenterが押されるまで交互に表示する というプログラムを作りたいのですが、 "ATTACK1"と"ATTACK2"のフレームを交互にずっと表示されるだけで、 ATTACK3へ移動しません。 "ATTACK1"というラベルのフレームに以下のように書きました。 ActionScript2.0でやっています。 どこが悪いのか教えてください。お願いします。 ATTACK1フレームのActionscript var timeCount = true; var endTime = getTimer()+0.2*1000; stop(); onEnterFrame = function() { if( timeCount ){ time = Math.ceil((endTime-getTimer())/1000); if( time <= 0 ){ timeCount = false; if( count >= 10 ){ gotoAndPlay("ATTACK3"); count=0; delete this.onEnterFrame(); } gotoAndPlay("ATTACK2"); count=count+1; delete this.onEnterFrame(); } } }; ATTACK2フレームのAcctionscript var timeCount = true; var endTime = getTimer()+0.2*1000; stop(); onEnterFrame = function() { if( timeCount ){ time = Math.ceil((endTime-getTimer())/1000); if( time <= 0 ){ timeCount = false; gotoAndPlay("ATTACK1"); delete this.onEnterFrame(); } } };

    • ベストアンサー
    • Flash
  • onRelease文での動作について・・・。

    ムービークリップをボタンにして、その階層の最初のフレームに this.onRollOver = function() { this.onEnterFrame = this.nextFrame; }; onRelease=function(){ var num:Number=0 onEnterFrame=function(){ trace("LOOP num ="+num) num ++ if(num>30){ delete onEnterFrame } } } stop() 最後のフレームに this.onRollOut = function() { this.onEnterFrame = function() { if (this._currentframe > 1) { this.prevFrame(); } }; }; とした場合について質問です。 ボタン上にカーソルがある場合は30までカウントされます。 しかし、クリック直後にカーソルがボタン上から離れるとカウントが停止します。 ボタンから離れてもカウントを続けるにはどうすればよいでしょうか?? ちなみに、このスクリプトは簡単に流れが分かるように作ったものなのでfor文などではなくonEnterFrame~での対処法を教えて下さい。 実際にはonEnterFrame以下はもっと長くなっているので・・・。 どうかお願いしますっ!!! m(_ _)m

    • ベストアンサー
    • Flash
  • VBマクロ 経過時間の表示

    こんにちは。VB勉強中の初心者です。 時間を計ろうと[start][stop]ボタンと [スタート時刻][ストップ時刻][経過時間]を表示するテキストボックスを作り、 WEB検索やテキストなどから引用し、以下のようなコードを書き込みました。 Private Sub CommandButton1_Click() StartTime = Time TextBox1.Text = StartTime TextBox2.Text = "" TextBox3.Text = "" CommandButton1.Enabled = False CommandButton2.Enabled = True End Sub Private Sub CommandButton2_Click() StopTime = Time t = (StopTime, StartTime)*24*3600 TextBox1.Text = StartTime TextBox2.Text = StopTime TextBox3.Text = t CommandButton1.Enabled = True CommandButton2.Enabled = False End Sub ですが、これでは[経過時間]の表示が秒単位の整数です。 表示方法を[時刻]と同様に「h:mm:ss」とすることは可能でしょうか? また、可能であれば、どのように加工したらよいでしょうか? よろしくお願いいたします。

  • Flash オブジェクトの表示/非表示

    こんにちは。今回はオブジェクトの表示/非表示のことに関して質問させていただきます.使っているものは、Mac/FlashCS3/AS1&2 です. (フレーム名"s1"にて) MC(ムービークリップ)/pre_btn(ボタン)/del_btn(ボタン)/btn(ボタン)というオブジェクトが画面に表示してあります. (アクションフレームに) pre_btn.onRelease = function(){   MC._visible = true; } del_btn.onRelease = function(){   MC._visible = false; } (btnムービークリップアクションに) on(release){   _root.gotoAndPlay("s2") } (フレーム名"s2"にて) btn2(ボタン)のみ画面に表示されています. (btn2ムービークリップアクションに) on(release){   _root.gotoAndPlay("s1") } 以上のACを記述しました.これでMCを表示/非表示させることができ,btnをクリックし"s2"フレームに移動/btn2をクリックし"s1"フレームに移動することもできるようになりました. しかし,"s1"にて非表示にしたMCが,"s2"のフレームに移動し"s1"に戻ってきたとき,表示されている状態に戻ってしまいます. どうしたら,一度非表示にしたMCを,その後フレーム移動したとしても,非表示の状態に保つことができるのでしょうか?? どうか,ヒントだけでもいいので,何か教えていただけると嬉しいです. よろしくお願いします.

  • 一定処理せずに待つアクションスクリプトを教えて下さい。

    こんにちは、 現在WinでFlash MXを使用してます。 getTimer関数を使用して待ち時間を作ってみたのですが動作しません。 現在作成したプログラムは ◆1フレーム目 startTime = getTimer(); timeOut = 3000; ◆2フレーム目 if( getTimer() > startTime + timeOut ){ gotoAndPlay(3); } else{ gotoAndPlay("lop"); } このようになっており、 ”3フレーム目”にジャンプしてほしいのですが、 ジャンプしません。 何故でしょうか?

    • ベストアンサー
    • Flash
  • FlashでXMLを読み込んだ際の関数について

    XMLでデータを読み込んで表示させているボタンがあり、 そちらを制御するための関数を作りたいのですがうまくいきません。 btn0.onRelease = function() { _root.sound_mc.songStarter(songfile[0], songname[0]); }; btn1.onRelease = function() { _root.sound_mc.songStarter(songfile[1], songname[1]); }; btn2.onRelease = function() { _root.sound_mc.songStarter(songfile[2], songname[2]); }; とある中身を簡単に書きたくて、 for(var i=0; i<=2; i++) { var btn = this["btn" + i ]; btn.onRelease = function() { _root.sound_mc.songStarter(songfile[i], songname[i]); }; } と記述してみましたが、動きません。 正しい書き方をどなたかご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASHでHPのメニュー画面

    FLASHを使って、ホームページのメニューを作りたいと思っています。 そこで、SONYのホームページのようにボタンを押すと、メニュー画面がスクロールして表示され、もう一度ボタンを押したらフレームが逆再生されてメニュー画面が消えるようにしたいと思い下記のように作成しました。 (suzuki-_-さんの方法を参考にして作らせていただきました。QNo.2540039) MC1に this.onEnterFrame=function(){ if(aaa%2==0){ this.prevFrame(); }if(aaa%2==1){ this.nextFrame(); } } ボタン1に on(press){ aaa=aaa+1; } としていました。 これでうまく動いていたのですが、ここでボタン2を作り、もう一つ同様のアクションをするものを作ったのですが、この場合MC1が表示されている場合、MC1を引っ込めてから、MC2を実行しようとして、以下のようにしたのですがうまく動作しません。どのようにしたらいいかアドバイスをお願いします。 MC1 this.onEnterFrame=function(){ if(aaa%2==0){ this.prevFrame(); }if(aaa%2==1){ this.nextFrame(); } } ボタン1 on(press){ aaa=aaa+1; if(bbb%2==1){ bbb=bbb+1; } } MC2 this.onEnterFrame=function(){ if(bbb%2==0){ this.prevFrame(); }if(bbb%2==1){ this.nextFrame(); } } ボタン2 on(press){ bbb=bbb+1; if(aaa%2==1){ aaa=aaa+1; } } これをメインのフレームに配置したのですがうまく動作しませんでした。 一応調べてみると、変数は定義したMCの中だけでしか有効ではないらしいということがわかりました。どうすれば、目的の動作が動くか教えていただきたいです。よろしくお願いします。

  • 複数のクリックボタンにより再生と停止場所を指定する方法

    複数のボタンを用意し、クリックするボタンにより異なるフレーム数で停止たいと思っております。 停止したいフレームごとにstop();を入れると、そこで毎回止まってしまうのでボタン毎に停止場所を指定しようと、以下のように試してみましたが、出来ませんでした。 停止場所をラベルでも指定してみましたが、出来ませんでした。 stop(); _root.next1.onRelease = function() { gotoAndPlay(5); this.stop(10); } _root.next2.onRelease = function() { gotoAndPlay(5); this.stop(20); } どなたかお考えのあるかたご教授いただけますと幸いです。 当方 Flash8 ActionScript2.0 を使用しています。

  • 1/10秒単位で経過時間を測りたい

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