タイムウォッチ作成に関する質問

このQ&Aのポイント
  • 30FPSのフラッシュでタイムウォッチを作成する方法を教えてください。
  • タイムウォッチにおいて、秒が60秒経つと0秒に戻り、1秒に1が加算されるようにする方法を教えてください。
  • FPSを変更しても他のプログラムの変更が必要なく、タイムウォッチが正常に動作するようにする方法を教えてください。
回答を見る
  • ベストアンサー

タイムを測りたいのですが・・・

突然の質問失礼します。 30FPSのフラッシュでタイムウォッチを作りたいのですが、途中で壁に当たったため質問をさせて頂きます。(どうか、そんな無謀な事をしなければ・・とは思わないでやってください) 分を計測するときは、_rootに onEnterFrame = function(){ time++; minutes = time / (60*fps) } とし、秒はminutesのすぐ下に minutes = time / fps; と記述しました。 それで、ミリ秒も同じようにしたのですが、問題があったのです。 秒の場合、「60秒が経つと0秒に戻り、1秒に1が加算される」ようにしたいのです。 つまり、FPSを記した変数fpsを変更した時に、他にプログラムの変更が必要の無いようにしたいと考えています。 書いている自分でも文章力の無さ、理解しづらいと言うのは分かっています。けれど、それでも質問をしなければ進めません。 参考URLだけでも十分ありがたいです。 どうか、アドバイスをお願いします。

noname#77303
noname#77303
  • Flash
  • 回答数2
  • ありがとう数1

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

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

onEnterFrame のような,すぐに変動してしまう物はタイマーには使えません。 普通は,それこそ,その名の通り, getTimer 関数 を使います。 onEnterFrame 自体は変動しますが, getTimer で得られる 各フレーム時間ごとの時間はかなり正確なので, onEnterFrame 内で getTimer を使用て,動作間隔が変動しても, どんなフレームレートでも,ほぼ一定の数値が得られます。 (setInterval を使用するよりずっとずっと正確です。) Google検索 「setInterval Flash」 http://www.google.co.jp/search?hl=ja&q=setInterval+Flash

noname#77303
質問者

お礼

回答ありがとうございます。 getTimer()を使ってみましたが、どうやら再生開始時からカウントするようです。 ロード画面、タイトル画面があるので、ゲームを始めた時点でカウントを始めるようにしたいのですが、どのようにすればいいのでしょうか。 お礼なのに追加質問、すみません。

その他の回答 (1)

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

#1です。すみません。 書いている内容と,Google検索 URL がズレていました。 Google検索「getTimer Flash」 http://www.google.co.jp/search?hl=ja&q=getTimer+Flash

関連するQ&A

  • 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
  • AS2.0 ボタンを押し続けた際の処理

    ボタンを押し続けた際に~する、という処理を実現するため 次のようなスクリプトを作成しました。 //ここから //1フレーム目 mc_hoge.onPress = function() { this.onEnterFrame = function(){ cnt++; if(cnt>=max_cnt) delete this.onEnterFrame; } } mc_hoge.onRelease = function() { delete this.onEnterFrame; if(cnt>=max_cnt) trace("~秒押し続けた際の処理"); else trace("普通のクリックをした際の処理"); cnt = 0; } max_cnt=24;//カウントの上限を設定します。適当に24としました。 cnt = 0;//カウント用変数を初期化 //ここまで onEnterFrameでボタンが押されている間、カウントを続けます。 (ボタンを離すか、上限に達したらonEnterFrrameを削除しています) そのカウントした値でボタンを押し続けたかを判定しています。 ここで、この方法よりも動作に負荷がかからないようにするためには このスクリプトをどのように書き換えればよいでしょうか。

  • FLASH時間処理のミリ秒の除去と時、分の表示のさせ方。

    flash内のあるボタンが押された時から時間を計測するということをしたいのですが、(イメージ的には携帯で通話しているときに表示される通話時間です。) http://oshiete1.goo.ne.jp/qa2684689.htmlのページの _root.timer.text = Math.floor((getTimer()-time1)/1000)+"."+("00"+(getTimer()-time1)).substr(-3, 3); では、ミリ秒と秒のみの表示になっておりミリ秒を除いた時、分、秒のみの表示がしたいのですが、60秒を超えてしまったり、分が0のままにんなってしまったりミリ秒が被ってしまったりと Math.floor((getTimer()-time1)/1000/60/60)+":"+((getTimer()-time1)/1000/60)+"."+("00"+(getTimer()-time1).substr(-3, 3); などいろいろ試してみたのですができません、根本的に間違っているのでしょうか? substr(-3, 3) と記述など何のためにあるのかもわからない初心者ですが、どなたかご教授していただけませんでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 二つのファイルが同一タイムスタンプで書かれたときにエラー発生

    現在稼働中のシステムが、突然ダウンしました。 原因を調査しているのですが、特別変わったことがありません。 ただ、一つ気がついたのですが……このエラーは二つのファイルを書き込んだ直後に発生したのですが、その2つのファイルのタイムスタンプが、ミリ秒単位で全く同じなのです。(同じプロセスの別スレッドで書いています) それで質問なのですが 1. このように、全く同じタイミングでファイルが書かれるとエラーになる、というような症状を見聞きされた方はいらっしゃらないでしょうか。 2. タイムスタンプというのはどのタイミングで発行されるのでしょうか。(ファイルをクローズした瞬間、など) 3. 再現テストをしたいのですが、このように、ミリ秒単位でタイムスタンプを揃えて二つのファイルを書くような方法が何かあるでしょうか。 OSはWindows2000SP4です。 よろしくお願い致します。<(_ _)>

  • ポンプ車操法 タイム短縮について

    お世話になっております。カテゴリー違いでしたらすみません。 この度はポンプ車操法の地方大会出場に伴い、3番員として出場予定で練習に励んでいます。 今のところ、1線目のタイムがベストタイムが56秒です。自分がタイムに関わるのは2線延長からですが、タイムが縮まらずに不甲斐無い思いでいっぱいです。 1番員の第2線延長はじめから計測で自分の4番員への第2線放水はじめの伝達までが最近は53秒で安定しています。出場する地方大会の過去の参考DVDを見て計測したところ、同じく53秒で伝達していました。全国大会の動画を見ますと、50秒から51秒で伝達しているので自分もそれに近づくように練習したいとおもっていますが、現時点で4番員への伝達から送水火点を倒すまで16秒くらいかかっています。 ですので第2線のタイムが53+16なので69秒なのですが、参考DVDや動画を見ていると第2線放水はじめの伝達から10秒から12秒くらいで火点が倒れています。 自分の4番への伝達までが53秒なので動画と同じように10秒から12秒で火点が倒れていたら、65秒前後で倒れるはずなのですが、なぜか69秒くらいかかってしまっています。 ホースは競技用のホースを使用して計測しています。ホースのねじれは2番員のホース部分で一箇所クロスするような感じでほぼ毎回絡まっています。しかしそれを考慮しても1秒くらいのロスでしかないと思いますし。 それだけのホースの折れで69秒もかかってしまうものなのか疑問です。 一線目は2番員の4番員への伝達から約12秒で水が通り火点を倒せています。 4番員に事細かく確認していませんが、やはり1線と2線の送水の操作(送水圧)が違うからでしょうか? 4番員に1線と2線を同じ圧で送ってほしいとなんとなくお願いしたのですが… あまりうるさく言うと4番員に申し訳ないですし、輪を乱すことにもなりかねないので自分からはいえないです。 指導に当たってる署員に相談しても4番員の送水に対して1線と2線の伝達から火点までのタイムが違うことを指摘している風もないですし…。 署長などがたまに見に来て2線のタイムを聞いて3番員のホースの展長をもっと早くするようにと指導を受けます。 2線目のタイムが69秒なのであと4秒は縮めたいのですが、53秒で伝達しているので自分が頑張って4秒縮めるのは難しいですし、全国大会の動画を見た限り自分の力ではあと1秒2秒縮められるくらいが現実的と思うのですが… 2番員からも2線は3番のタイムだ と言われとても責任を感じて居ますし、どうにか縮めたいです。 自分なりに全力で走って全力でのホースの展長で53秒で満足はしていませんが、自分にできるのはホースの展長のコツなど、自分では盲点になっている部分もあるかとおもうのでなにかしらアドバイスなど御教授頂ければとおもって質問させていただきました。 自分のホースの展長などを動画で見ているわけではないので指摘するにも困ると思いますが、確認や、念を置くという意味でコツなどを御教授頂けたらと思っています。 3番員の大きな役割は2線延長開始から4番への伝達が最大の責任だと思うので本当にタイムが縮まらずに悔しいですし、不甲斐無さでいっぱいです。 愚痴混じりのようになってしまいましたがなかなか本音で相談しても解決に繋がらないのでこの場をおかりした次第です。

  • NC旋盤加工でのマシンサイクルタイム測定

    当社では精密部品加工をしています。 機械設備については全く素人のため、マシンサイクルタイム計測について分からない点がありましたので質問させていただきます。 製造部門に、マシンサイクルタイムの測定方法を尋ねたところ、加工しているところをビデオ撮影したあと、コマ送りにしてそれぞれのツールの加工時間を計測しているとのことでした。 NC旋盤は、プログラムで動いているのですよね? 機械側で100分の1秒や、1000分の1秒単位でそれぞれのツールの加工時間を計測する機能があり、そのログが残っていくようなものは普通についている機能ではないのでしょうか? 手でハンドルを回して加工している旋盤ではないのですから、それくらいの事はできて当然だと思うのですが、加工機械はそういう世界ではないのですか? それとも、当社の製造部門が古い体質なだけですか?

  • fpsについて

    大変初歩的な質問させていただきます。 現在イメージセンサーを勉強してます。その中で頭で整理できなくなったので以下に質問します。 1fps = 電子シャッター値[秒]*60[秒] でよいでしょうか? もし違う場合、fpsと電子シャッターの関係はどの様なものでしょうか? それとも概念としてまったく関係ないものでしょうか? 宜しくお願い致します。

  • フラッシュプレイヤーのバージョンを6から7にあげるとストップウォッチが作動しなくなった。

    質問させて下さい。 function restartTimer() { hours = "00"; minutes = "00"; seconds = "00"; milli = "00"; buttonPressTime = getTimer()/1000-pauseLength; pause(); } // function pause() { pauseTime = getTimer()/1000; timing = false; } // function unpause() { unpauseTime = getTimer()/1000; pauseLength = (unpauseTime-pauseTime)+pauseLength; timing = true; } // _root.onEnterFrame = function() { totalTime = getTimer()/1000-pauseLength; goTime = totalTime-buttonPressTime; // if (timing) { hours = Math.floor(goTime/3600); minutes = Math.floor((goTime/3600-hours)*60); seconds = Math.floor(((goTime/3600-hours)*60-minutes)*60); milli = Math.floor((gotime-(seconds+(minutes*60)+(hours*3600)))*100); } }; unpausebutton.onRelease = function() { unpause(); pausebutton._visible = 1; unpausebutton._visible = 0; result._visible = 0; }; ソースが長くて申し訳ありません。 このスクリプトをあるサンプルからもらいつかっていたのですが、 テキストエリアにスクロールバーをとりつけるため、パブリッシュの設定でプレイヤーのバージョンを6から7にあげたところ、ストップウォッチが作動しなくなりました。 一体どういう理由によるものなのでしょうか? お答えいただければ幸いです。 私がつかっているのは、 Windows XP Flash MX 2004 です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • CPUが不安定になりました

    CPUのスペックアップのため、「Athlon64 3200+」から「Athlon64X2 4400+」に変更したのですが、その後ゲームなどのfpsが安定しなかったり、(基本は60fpsですが、2~3秒おきくらいに100fpsくらいになったりします)MIDIなどを再生するときに音とびを起こしたりします。 これはどういうことなのでしょうか? スペックは OS:Windows XP Professonal マザーボード:A Open nCK804 CPU:AMD Athlon64 X2 4400+ メモリ:1024MB RAM となっています。

  • オリンピック中継のタイム計測

    昨日、夜、テレビでオリンピックの大回転だか回転だかを見ていたときに思ったのですが、画面には「LIVE」と出ていたので、中継ということですよね。で、選手が台に立って出発直前・・・という時に、すでに1:○○:○○とタイムが表示されているのですが、どうして滑り始める前にタイムが表示されるのでしょうか。 また、選手が台を離れてスタートしたあとに、最初に表示されていたタイムに加算されていくのかなと思ったのですが、最初に選手が台のところにいた時の画像からコース途中に画像が切り替わったときに、その切り替わった間にもう15秒くらい進んでしまっています。 中継で、ただカメラを切り替えただけならこんなことはあるはずがないと思うのですが・・・。 まとまりのない質問で申し訳ありませんが、どなたかご存知の方がいらっしゃったら教えて下さい。よろしくお願い致します。

専門家に質問してみよう