• 締切済み

モバイル版(Flash lite1.0)でカウントダウン中一旦停止し、またカウントダウンさせる方法

初めまして。 モバイル版のflashで3択の時間制限付きのクイズを作成しております。 仕様としては、 1フレーム目:スタート画面 5フレーム目:時間制限・問題・3択答え部分 9フレーム目:正解画面 14フレーム目:不正解画面 19フレーム目:終了画面 現在タイマーは60秒からカウントダウンしており、 答えを選択し、正解又は不正解の表示後 次の質問に戻るのですが、 タイマーがまた60秒からカウントダウンになります。 1問目で60・59・58秒で答えボタンを押したとし、正解・不正解部分でいったん秒数が止まり、2問目でまた58・57・56・55・・・となるようにするにはどのようにすればよいか教えて下さい。 宜しくお願い致します。

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

みんなの回答

noname#35109
noname#35109
回答No.3

#1&#2です。 シンタックスエラーは,#2のものをコピペしたからではないでしょうか? ここのサイトは TAB や 半角スペース を行の先頭に使えないのです。 使っても,すべて消えてしまうので,#2ではわかりやすいように,インデントを全角空白文字で入れたのです。 コピペするのでしたら, #1のものをコピペして使ってください。 #1のスクリプトの説明を,#2でしただけですから,そのままのコピペでは使えません。 #2のものを使う場合は, アクションパネルの置換機能で, 全角空白文字を半角空白文字に置換して使用してください。

sleepsheep
質問者

お礼

こんばんは。 シンタックスエラーはsassakunさんのおっしゃる通りでした。 以前にもこんなエラーが出た事があり、理由がわからなかったので勉強になりました。 ありがとうございます。 再度、正解画面の最後のフレーム、不正解画面の最後のフレームに // _root.countMC に命令  tellTarget ("/countMC") {    play();  }  // countMC内の変数 mytime1 に 現在の時間を代入  /countMC/:mytime1 = getTimer(); を入れなおしてみたのですが、なぜかカウントが動きませんでした。 次の問題の最初にフレームにも試しましたがやはりカウントは止まったままでした。 // _root.countMC に命令  tellTarget ("/countMC") {    play();  }  // countMC内の変数 mytime1 に 現在の時間を代入  /countMC/:mytime1 = getTimer(); こちらのスクリプトはコピペするだけではいけないと言う事でしょうか?

noname#35109
noname#35109
回答No.2

#1です。 やはりわけがわかりません。 #1では, カウントダウンををストップさせたいときに,  // _root.countMC に命令  tellTarget ("/countMC") {    // フレーム2 へ行ってストップ    gotoAndStop(2);  }  // countMC内の変数 starttime に counter を代入  /countMC/:starttime = /countMC/:counter; を実行して, カウントダウンを再開したいときに,  // _root.countMC に命令  tellTarget ("/countMC") {    play();  }  // countMC内の変数 mytime1 に 現在の時間を代入  /countMC/:mytime1 = getTimer(); を実行してくださいと言う意味のことを書いたのです。 いつカウントダウンを止めたいのか, いつカウントガウンを再開したいのか, こちらとしてはわからないのです。 ----------------------------------------------- > 1問目で60・59・58秒で答えボタンを押したとし、 > 正解・不正解部分でいったん秒数が止まり、 この↑ときに,  // _root.countMC に命令  tellTarget ("/countMC") {    // フレーム2 へ行ってストップ    gotoAndStop(2);  }  // countMC内の変数 starttime に counter を代入  /countMC/:starttime = /countMC/:counter; を実行し, > 答えを選択し、正解又は不正解の表示後 > 次の質問に戻るのですが、 この↑ときに,  // _root.countMC に命令  tellTarget ("/countMC") {    play();  }  // countMC内の変数 mytime1 に 現在の時間を代入  /countMC/:mytime1 = getTimer(); を実行してくださいと言う意味のことを, >> こういったスクリプトを, >> フレームやボタンに書けば良いと思います。 と書いたのです。 とにかく,スクリプトを形通りにコピペするのではなく, どういったタイミングで, どのスクリプトを実行すればいいのかを考えて, 実際にしたいことを実現してください。 どういったタイミングで何をしたいのかなどわかりません。 ボタンで次の問題に行くのでしたら, その次の問題に行くボタンに, カウントダウン再開スクリプトを書くべきでしょう。 次の問題に勝手に進むのでしたら, 次の問題の最初にフレーム, もしくは, 前の問題の「正解」や「不正解」フレーム最後のフレームに, カウントダウン再開スクリプトを書くべきでしょう。 その辺のところは,書かれていませんし, 仮に書いてくださっても,そのルールを変えたいときに変えるでしょう。 どんなルールでありのかわかりませんし, どんなルールであっても良いですが, カウントダウンストップのときにカウントダウンストップのスクリプト。 カウントダウン再開のときにカウントダウン再開のスクリプト。 それぞれを書いてくださいということです。 ----------------------------------- なお, #1に書いた参考URLで, その URL の#2の方が, 同じスクリプトを毎回書くのではなく, call() 関数 を使えば,ファイル容量の節約にもなりますよと回答してくださっています。 call() 関数 を使わずに一々同じ「ストップ」「再開」スクリプトで作ってみて, さらに容量オーバーでうまく動かない場合は,call() 関数 を使って, 無駄を減らしてください。

sleepsheep
質問者

お礼

ありがとうございました。 正解・不正解画面の部分でカウントを止める事はできました。 意味がわかっておらず、そのままペーストしていたのが問題だったようです。 しかし、正解・不正解後のカウントの再開でエラーが出てしまいました。 正解・不正解後は自動的にクイズに飛ぶ仕様となっています。 前の問題の「正解」や「不正解」フレーム最後のフレームに // _root.countMC に命令  tellTarget ("/countMC") {    play();  }  // countMC内の変数 mytime1 に 現在の時間を代入  /countMC/:mytime1 = getTimer(); を記入すると **エラー** シーン = シーン 1, レイヤー = 各場面, フレーム = 13 :行 2:シンタックスエラー  tellTarget ("/countMC") { **エラー** シーン = シーン 1, レイヤー = 各場面, フレーム = 18 :行 2:シンタックスエラー  tellTarget ("/countMC") { ActionScript エラー数 :2 報告済みエラー :2 と出てしまいました。 また次の問題の最初にフレームにも試しましたがやはり同じエラーが出ました。 正解・不正解の表示のさせ方がアクションフレームの中に tellTarget("/"){ gotoAndStop("question"); questionCount++; if(questionCount > questionToal){ gotoAndPlay("result"); }else{ gotoAndStop("question"); } } を使っているのが問題なのでしょうか?

noname#35109
noname#35109
回答No.1

> どのようにすればよいか教えて下さい。 と書かれましても, 肝心な,カウントダウンのスクリプトやその仕組みが書かれていないので, どのようにもこのようにも回答できません。 したがって, 勝手に作ったものの回答でよろしいでしょうか。 勝手に作ったものの作り方を初めから説明します。 こちらで基本的な部分は回答しています。  ↓↓↓ Flash lite1.0で カウントダウン http://oshiete1.goo.ne.jp/qa2402811.html  ↑教えて!goo ↓OKWave(同じです) http://okwave.jp/qa2402811.html 以下の説明でわからなければ,参考にしてみてください。 --------------------------------------- 上の URL と重複する部分が多いですが, 一応,この回答用に書き直しさらにカウント停止と再開のスクリプトを追加回答します。 今作られているものでは, どうなっているのかさっぱりわからいので, 新規ドキュメントを作成して次のサンプルを作成してみてください。 まず, _root(メインムービー)のステージ上に ダイナミックテキスト のテキストフィールドを作成し, 例えば 「counter」 という "変数名" を付けます。 この「counter」 という変数名のテキストフィールドを選択して, ムービークリップに変換します。 そして,その 「counter」 という変数名のテキストフィールド入りのムービークリップに "インスタンス名" を付けます。 例えば「countMC」というインスタンス名にしておきます。 次に,この「countMC」をダブルクリックして, ムービークリップ内の編集に入ります。 ムービークリップ内は1フレーム1レイヤーだと思うので, これを3フレーム2レイヤーにします。 そして, 新しく作成した方のレイヤーの,フレーム1 と フレーム3 をキーフレームにします。              1   3  □ レイヤー 筆・・|○ []|○| ←スクリプト用レイヤー  □ レイヤー 筆・・|●/// []| ←counter のレイヤー そして,スクリプト用レイヤーのフレーム1 には次のように書きます。 ----------------------------------------- // タイマー(カウンター)の初期値を設定(※可変) starttime = 60; // mytime1 に最初の タイム を記録 mytime1 = getTimer(); ----------------------------------------- そして,フレーム3 には次のように書きます。 ----------------------------------------- // mytime2 に随時タイムを取得 mytime2 = getTimer(); // タイマー(カウンター) にカウントダウンを表示 counter = starttime-int((mytime2-mytime1)/1000); // もし タイマー(カウンター)が 0 以下になれば if (counter<=0) { // タイマー(カウンター)の値を 0 に固定 counter = 0; // ムービークリップ内をフレーム1に戻す gotoAndStop(1); // タイマー(カウンター)が 0 より大きいとき } else { // ムービークリップ内をフレーム2に戻す(ループ) gotoAndPlay(2); } ----------------------------------------- int は小数点以下を切り捨てる関数です。 これで, カウント表示用のムービークリップは完成です。 何もない任意の位置をダブルクリックするか, 「編集」→「ドキュメントの編集」で, _root の編集に戻ってください。 ボタンを(ボタンシンボルのインスタンスを) どこか2つ適当に作成します。 そして,カウントダウンストップボタンには, ----------------------------------------- on (release) { // _root.countMC に命令 tellTarget ("/countMC") { // フレーム2 へ行ってストップ gotoAndStop(2); } // countMC内の変数 starttime に counter を代入 /countMC/:starttime = /countMC/:counter; } ----------------------------------------- ストップ解除(再カウント開始)ボタンには ----------------------------------------- on (release) { // _root.countMC に命令 tellTarget ("/countMC") { play(); } // countMC内の変数 mytime1 に 現在の時間を代入 /countMC/:mytime1 = getTimer(); } ----------------------------------------- と書くと, カウントダウンが止まったり再開したりします。 こういったスクリプトを, フレームやボタンに書けば良いと思います。

sleepsheep
質問者

お礼

sassakunさん、ご回答ありがとうございます。 また、説明不足で申し訳ございません。 sassakunさんの方法で一度試し、 カウンターの方はできたのですが やはり、質問の答えを選択後、正解・不正解画面へ飛び、 また60秒からカウントされてしまいます。 カウントダウンストップボタンとストップ解除(再カウント開始)ボタンの入れる場所が違っているのでしょうか・・・。 私が入れた所は質問部分の個所にボタンを作成し、カウントダウンストップを入れ 正解フレームと不正解フレーム部分にストップ解除(再カウント開始)を入れました。 また回答ボタンの場所にカウントダウンストップを入れてもみましたがやはりストップされませんでした。 スクリプトは以下の通りです。 on (release) { // _root.countMC に命令 tellTarget ("/countMC") { // フレーム2 へ行ってストップ gotoAndStop(2); } // countMC内の変数 starttime に counter を代入 /countMC/:starttime = /countMC/:counter; } on (keyPress "1") { if(correctNum == 1){ gotoAndStop("correct"); }else{ gotoAndStop("incorrect"); } } on (keyPress "2") { if(correctNum == 2){ gotoAndStop("correct"); }else{ gotoAndStop("incorrect"); } } on (keyPress "3") { if(correctNum == 3){ gotoAndStop("correct"); }else{ gotoAndStop("incorrect"); } }

関連するQ&A

  • Flash lite1.0で カウントダウン

    こんばんは。 さっそくですが、質問です。 携帯用のシューティングゲームを作っています。 画面上に60秒から0秒までのカウントダウンを 表示させたいのですが、 時間を取得するような関数などはあるのでしょうか? あと、できる場合に0秒になったときにgotoAndPlayで他のフレームに 飛ぶことは可能なのかもしりたいです。 また、時間取得等ができない場合で代用の方法があるのであれば 教えてください。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • 時間制限

    使っているのはFlash MXです。 4択問題で、正解すると次のフレームに行き、 間違えると、不正解のフレームにいくというものです。 そのゲームに時間制限をつけたいのですが、 自動的にタイマーがスタートして、答えを7秒以内に クリックしないと、自動的に不正解のページに行くという風に したいのですがわかりません。 不正解フレーム名は「out」で、次の問題にいく場合は、「Question○」となります。

    • ベストアンサー
    • Flash
  • パワーポイントのスライドにカウントダウンタイマーを貼り付けたい。

    パワーポイント2003を使用しています。 スライドにカウントダウンタイマーを貼り付けることなどは可能なのでしょうか。 (~~まであと●●秒) の●●の部分がカウントダウンされるような。 一秒ずつ、秒数だけを変えたスライドを作って、自動で進めていくことも考えたのですが、数百枚も作るのは大変なので・・・ もし可能でしたら、教えていただけると非常に助かります。 宜しくお願い致します。

  • Flash lite1.0の計算クイズ

    初めまして。 初心者ですがモバイル版のFlash lite1.0で計算クイズを作成したいと思っています。 スタート画面でスタートを押すとクイズが始まり ランダムで問題が表示され、答えを数字ボタンで入力後 正解だと○不正解だと×と表示され また問題へ進んでいき、100問終了後 正解率とかかった時間をランキングに飛ばす と言う仕様で作成していきたいと思っているのですが 現在作成しているスクリプトではランダムはできているのですがクイズが9問までしかできません。 また、問題を表示できても答えを入力し、正解・不正解の表示をさせる方法がわかりません。 問題を100問作成する方法と答えを入力する方法を教えてください。(答えは二桁まで入力可能にしたいです) 説明がわかりづらいかもしれませんが 宜しくお願いします。

    • ベストアンサー
    • Flash
  • FLASH LITE1.1 制限時間を任意に設定

    FLASH LITE1.1でクイズの制限時間を任意に設定しようとしているのですがうまくいきません。 やろうとしていることは、 ユーザーが入力テキストに制限時間(秒)を入力し、その時間が経過したら特定のフレームに跳ぶ、 ということです。 具体的には次のようにしています。 入力テキストの変数を「lmt」としてルートの2フレームに配して停めておき、*キーでスタートさせます。 ルートの3フレームにMC「c_mc」を置き、ダイナミックテキストの変数「cnt」を設定して、「c_mc」の1フレームから10フレームをループさせることで秒数を表示し(10fps)ます。 そして、ルートの3フレームに次のASを書いています。 tellTarget("/c_mc"){play();} if(lmt == /:cnt){gotoAndPlay("tokutei");} if の条件がうまく書けていないかと思うのですが、evalを使ったり、""を使ったりしても結局うまくいきませんでした。 おわかりになる方、ぜひご教授いただきたいと思いますので、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • カウントダウンタイマーでのタイマーの表示方法

    VBを始めたばかりなです。 プログラムで-していく、カウントダウンタイマーを作成したのですが、1:30と設定すると90秒表示となり、どうしても01:30という分と秒の表示が出来ません。 カウントされる数字が、何分何秒という表示にさせる方法を教えて下さい 表示のプログラムは以下の通りです。 hyouji.Text = Format(waitsecond, "##:##") ※hyouji.textはタイマーを表示させる部分の名前です。

  • visual basic.netでのカウントダウンタイマーと音の鳴る方法

    visual basic.netであるゲームを作りたいのですが、時間制限が10秒で10秒経つと音がなるような設定にしたいのですが、どうすればいいのでしょうか?現在時間を載せることはできるのですが、10秒制限で、カウントダウンさせることができないのです。それに、0秒になったときの音の鳴らし方も分かりません。誰か分かる方、やり方だけでもけっこうですのでお願いします。 また、コードが分かれば助かります。

  • この内容のゲームの作成って可能なのでしょうか?

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

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

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

  • スマフォアプリでカウントダウンタイマーは?

    よろしくお願いします。 スマフォ(android)のアプリで、カウントダウンをしてくれるアプリを探しています。 カードゲームやボードゲームをするときに、一人の持ち時間を、たとえば10秒と決めてやるときに、カウントダウンしてくれるアプリがあると便利なのですが・・・。 そして、順番が終わった時にボタンを押すと、次の人の10秒がまたカウントダウンされる、、、という感じのものがないでしょうか。 将棋の対局時計のように、一人の持ち時間を何分と決めてそのカウントダウンという機能もあるとうれしいですが(複数人対応で)・・・。 とりあえず、単純に設定した秒数がカウントダウンされていってそれが連続するようなタイマーがあるとうれしいです。 説明が下手ですみませんが、よろしくお願いします。