• 締切済み

経過時間を計るには

簡単なクイズゲームを作っています。回答するまでにかかった時間を計って表示させたいのですがどうしたらいいでしょうか? クイズはランダムにフレームを移動して出題していて、回答したら(ボタンを押したら)またランダムにフレーム移動します。 5回回答したら結果画面のフレームに移動します。そこで回答するまでにかかった平均時間を表示させたいです。 環境はWindowsXP Flash8です。

みんなの回答

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

全問解答するまでにかかった平均時間は, トータルの経過時間を,問題数(クリック数)で割れば良いだけです。 トータルの経過時間は, getTimer() を使えば ミリ秒単位で取得できます。 ただそれだけのことですが, 作成物がたくさん出てきたり,フレームがたくさん出てきたりするような場合, こういうテキストのみでしか回答できない場所では具体的なスクリプトやその説明をするのが難しいです。 また,作成物などを指示通りに作成するのもかなり難しいと思います。 したがいまして, ActionScript で,なおかつ単フレームで説明します。 新規ドキュメントを作成して, フレーム1 の空白キーフレームに, 次の ////// から ////// の間のスクリプトを全文コピペして, ムービープレビュー もしくは SWF をパブリッシュしてください。 そして,この回答の最初に書いた4行をなんとか理解してください。 /////////////////////////////////////////////////////////////// // 前半はボタンなどの作成で本題とは関係ありません // まずスタートボタン(MC)を作成します staMC = _root.createEmptyMovieClip("start_mc", 0); staTF = staMC.createTextField("start_txt", 0, 0, 0, 0, 0); staTF.autoSize = true; staTF.background = true; staTF.backgroundColor = 0xFF6666; staTF.text = " スタート "; staMC._x = Stage.width/2-staMC._width/2; staMC._y = 50; // // 次に解答ボタン(MC)を作成します kaiMC = _root.createEmptyMovieClip("kaitou_mc", 1); kaiTF = kaiMC.createTextField("kaitou_txt", 0, 0, 0, 0, 0); kaiTF.autoSize = true; kaiTF.background = true; kaiTF.backgroundColor = 0x66FFFF; kaiTF.text = "  解答  "; kaiMC._x = Stage.width/2-kaiMC._width/2; kaiMC._y = 100; // // 次に経過時間表示用テキストフィールドを作成します keiTF = _root.createTextField("keika_txt", 3, 0, 150, 60, 22); keiTF.border = true; keiTF._x = Stage.width/2-keiTF._width/2; keiTF.text = "0.000"; // // 次に平均時間表示用テキストフィールドを作成します heiTF = _root.createTextField("heikin_txt", 2, 0, 200, 60, 22); heiTF.border = true; heiTF._x = Stage.width/2-heiTF._width/2; heiTF.text = " ---------- "; // // 解答ボタン(MC)は一応非表示にしておきます kaiMC._visible = false; // // ------------------------------------ // // ☆★以下が本題です★☆ // 解答ボタンクリック回数カウント用の変数 cnt の初期化 cnt = 0; // クリック回数を設定(5回) clc = 5; //------ // スタートボタンクリック時の動作定義 _root.start_mc.onRelease = function() { // 変数 time1 に現在の経過時間をセット _root.time1 = getTimer(); // 1フレーム進む時間毎に随時処理 _root.onEnterFrame = function() { // 経過時間を表示 _root.keika_txt.text = (getTimer()-_root.time1)/1000; }; // 解答ボタンを表示させます _root.kaitou_mc._visible = true; // 一応 このスタートボタンは削除しておきます this.removeMovieClip(); }; //------ // 解答ボタンクリック時の動作定義 _root.kaitou_mc.onRelease = function() { // 解答ボタンクリック回数カウント用の変数 cut の値に1を加算 _root.cnt++; // クリック回数が指定回数に達すれば if (_root.cnt == _root.clc) { // その時点での経過時間を表示 _root.keika_txt.text = (getTimer()-_root.time1)/1000; // 平均時間を表示 _root.heikin_txt.text = (getTimer()-_root.time1)/1000/_root.clc; // 一応 経過時間を随時算出する関数を削除しておきます delete _root.onEnterFrame; // 一応 この解答ボタンも削除しておきます this.removeMovieClip(); } }; /////////////////////////////////////////////////////////////// ※ 前半のボタンなどを作成する部分のスクリプトは,   Flash Player 8 以上の SWF をパブリッシュしないと動作しません。   後半の本題の部分は,   Flash Player 6 以上でも動作するスクリプトです。 できた Flash(SWF) の, 「スタート」をクリックすれば,随時の経過時間のカウントが始まります。 「解答」を5回クリックすれば,その5回にかかった平均時間が一番下のテキストフィールドに表示されます。 骨子のみを簡単に書くと,最初に書きました4行の通り,  平均時間(秒) = 経過時間(ミリ秒)÷1000÷クリック数     ↓つまり↓  平均時間 = (getTimer()-カウント開始時間)/1000/クリック数     ↓上の場合での具体的なスクリプトは↓  _root.heikin_txt.text = (getTimer()-_root.time1)/1000/_root.clc; と,これだけです。 上の例は1フレームのみの場合のやりかたです。 フレーム移動を使う場合は, 最初から不要なボタンなどをそのフレームに配置しなければ良いだけですから, ボタンの削除 や ボタンの表示非表示 などのスクリプトは当然不要になると思います。 その代わり,gotoAndPlay() とか gotoAndStop() などが必要になると思います。

supertentu
質問者

お礼

回答ありがとうございます! やりたいことができました

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Flashでランダムクイズゲームを作成する方法

    こんにちは。 Flashを使用してクイズゲームを作成しています。 30問から10問ランダムに出題して、正解の点数を出すようにする予定です。 現在↓のサイトを参考にして作成してます。 http://orange.2-d.jp/flash/action/19.html しかし、重複でランダム表示されてしまい行き詰まっています。 どのボタン、フレームにどのような命令をしたら良いのか分かりません… Flashに詳しい方、教えていただけると嬉しいです。

  • 経過時間について

    こんにちは 経過時間を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
  • 配列のシャッフル

    MCの中のフレーム1にイラストA、フレーム2にイラストB、フレーム3にイラストCを置いてそれぞれボタン化(btnA、btnB、btnC)し、 そのMCをコピーしてタイムライン上に3つ配置して、ランダムに被らないように表示して、btnAをクリックすると、シャッフルしてランダムに再び表示するというのを1フレーム内でやりたいのですがどうしたらいいでしょうか? 配列のシャッフルを使うというのは分かったのですが、その後が分からなくて・・・ 環境はFLASH8です

  • 二択のフレーム移動

    ボタンクリックで3216フレームか3062フレームの どちらかにランダムで移動させたいんですが、 アクションスクリプトをどう記述していいのか分かりません。 on (press){gotoAndPlay( この形の記述で出来るのでしょうか? それとも別の形なのでしょうか? 教えてください。 過去記事ではランダムに1から5の間のどれかに飛ばせる というものがおおく、特定の2フレームというのは なさそうでした…探しても見つけられませんでしたので、 どうぞお助け下さい。 当方バージョンは Flash8 プロフェッショナルです。

    • ベストアンサー
    • Flash
  • ページの切り替えのフェードイン/フェードアウトについて

    Flash8で1つのタイムライン上に フレーム1~30にフラグ名A フレーム31~60にフラグ名B フレーム61~90にフラグ名Cと設定しています。 各フラグの最後のフレームにはstop();が入っています。 そしてフレーム1~90にボタンX,Y,Zを配置し、 ボタンXはフラグ名A ボタンYはフラグ名B ボタンZはフラグ名Cに on (release) { gotoAndPlay( "フラグ名" ); } で移動するようにしています。 ボタンによるフレームの移動の際に、 今表示されている画面に移動先の画面をフェードインしながら表示させたいのですが、どうすればいいのでしょうか。 例えば、フラグ名Aの30フレームの画面が表示されていて、(ストップしていて、) ボタンZでフラグ名Cに移動する際に、 フラグ名Aの30フレームの画面からフラグ名Cの画面に徐々に切り替わるような感じにしたいです。 ボタンの押す順番などは決まっていないため、どんな順番でボタンを押したとしても、 今表示されている画面に移動先の画面をフェードインしながら表示させたいのです。 お分かりになる方ぜひ教えて下さい! よろしくお願いします。 使用環境 Flash8 WindowsXP SP2

    • ベストアンサー
    • Flash
  • この内容のゲームの作成って可能なのでしょうか?

    ほかのサイトにて同様の質問をさせていただいたのですが、回答をいただけなかったので、よろしくお願いいたします 現在の携帯版FLASHとPHPで下記のような事ができるか教えていただきたくて投稿させていただきました。質問内容がカテゴリやこのサイトに適していなかったら申し訳ありません。 内容は、携帯版でクイズゲームを作成したいと思っています。 1、クイズは一定の時間内に、設定された数を答えてそれが終了するまでの時間を競う。 2、時間計算以外に、例えば、   ○3問連続で正解すると、終了した秒数から何秒かマイナスされる。   ○全問正解で終了した秒数から何秒かマイナスされる。    3、終了した秒数によって、「あと一歩」や「おめでとう」等と書かれた種類の違う画像が表示される 4、クイズの問題は一文字ずつ表示されるようにする。 5、クイズは3択、4択問題で、携帯のボタンを押すと答えられるようにする。 6、この終了にかかったまでの時間をランキングで表示されるようにする。 7、出題される問題はDB等に用意されてて、その中からランダムで出題される というものなのですが可能でしょうか? たとえば携帯の機種によって、測定時間に誤差が出てしまうなど あったりするのでしょうか? FLASHを使用したアクションゲームなどではよく動きの早さが違うのを目にするのですが、 FLASH自体の動作が遅ければ測定するタイムも遅くなるから 問題ないのかなと、思ったり よろしくお願いいたします。

  • ランダム表示かつ重複しない

    現在flashでクイズを作っています。 一回スタートさせれば問題はランダムに5問でます。 正解し続ければ5問でクリア。 間違えれば終了です。 そこでクイズに使う背景をランダム表示かつ、重複しないものにしたいと思っていますがうまくいきません。 dummy_mcを作ってそこに 現在背景用の1~10swfファイルをランダム表示させています。 ただこれだと同じ背景が続けてでてきたりしてしまいます。 これを一回のゲームで背景が重複しないで表示させたいと思っています。 アニメーション、フレーム移動などは理解していますが scriptになると正直わからないことだらけです。 現在勉強中でscriptはコピペしながら改造している状態です。 解決法をわかるかたがいらっしゃったらよろしくお願い致します。

  • クイズの解答によってボタンの画像を変える

    Flashは初心者ですが、現在クイズを作成しています。 ボタンを押すとクイズが画面の半分に出てきて回答を選ぶと正解か不正解が分かります。 全部で20問くらいあるのですがランダムに並んで知るので、クイズの途中でもどのボタンが回答済み(正否も)か分かるようにするためです。 あるクイズが終わったら例えば正解ならボタンの色が青に、不正解ならボタンの色が黄色に変わるようにする方法が分かりません。 正解と不正解で飛ばすフレームを変えようと思ったのですが、他のボタンの処理が分かりません。 宜しくおねがいします。

  • 4択クイズの解答について悩んでいます(涙)

    現在私はVB2005で4択のクイズ形式のプログラムを作成しています。 目標は「300問の問題を作成しそのなかからランダムに100問を出題し全問回答を終えたらその結果を表示する」というものを作ることです。 データセットに問題、解答群などを格納しています。 それをフォームで表示してラジオボタンで4択のなかから正解と思うものを1つ選びボタンをクリックして次の問題へ移行する・・・というような流れのプログラムです。 今壁にぶつかっているのが「問題一つ一つの回答をどのように保持し、どのように結果表示すればいいのか」というところなのです。 当方VBは初心者でなかなか前に進めず悩んでいます。 知恵をかしてください。どうかよろしくお願いしますm(_ _)m

  • ランダム表示を重複させないようにするには

    はじめまして。 現在flashでクイズを作っています。 一回スタートさせれば問題はランダムに5問でます。 正解し続ければ5問でクリア。 間違えれば終了です。 そこでクイズに使う背景を重複しないものにしたいと思っていますがうまくいきません。 dummy_mcを作ってそこに 現在背景用の1~10swfファイルをランダム表示させています。 ただこれだと同じ背景が続けてでてきたりしてしまいます。 これを一回のゲームで背景が重複しないで表示させたいと思っています。 アニメーション、フレーム移動などは理解していますが scriptになると正直わからないことだらけです。 現在勉強中でscriptはコピペしながら改造している状態です。 解決法をわかるかたがいらっしゃったらよろしくお願い致します。

    • ベストアンサー
    • Flash