• 締切済み

今日の残り時間を表示する時計の作り方

はじめまして。学校の課題でFlashに取り組んでいるのですが、どうやってもうまくいかないので、よろしければ教えてください。 下記のページにある「残り時間表示時計」のように、「今日の残り時間を表示する」時計を作りたいのですが、どのようにすれば良いのでしょうか。できればテキストではなく、画像で表示したいと考えています。 http://web-mono.net/cl_c/index.htm ActionScriptを習い始めたばかりの初心者なので、詳しく解説も頂ければ幸いです。ちなみに、学校で使っているのはFlash8です。 どうぞよろしくお願いします。

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

みんなの回答

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

> はじめまして。 こちらこそ,はじめまして。 > 学校の課題でFlashに取り組んでいるのですが、 あの... 正直なのはよろしいのですが......, このカテゴリ(Flash)では良いのか悪いのかよくわかりませんが(明記されていませんが), 課題やレポートの答えを聞くことは,ルール違反になっています。 某カテゴリでは,課題やレポートの答えを聞く質問が大量に削除されています。 したがって,課題の答えを教えるわけには行かないのです...(多分)。 また私も, 「課題を完成させること」 より 「課題を完成させるために調べたり考えたりすること」 が大切だと思います。 したがってこの回答は途中までのヒント的な回答です。 また,このスレッドは,ご質問ごと削除になる可能性は大です(?)。 あと, 私自身はFlashの学校へ通ったことはありませんから, この回答は我流ガリガリで,順当法な模範解答ではない悪い回答の可能性があります。 その逆で, 実は先生も教えていない模範解答以上の部分があるかもしれません。 また, もしFlashの学校へ通ったことがあったとしても, 「今まで習った範囲で解決する」という,その「範囲」がわかりません。 したがって,習った範囲を超えていて,先生に怪しまれる可能性があるということも,念頭に置いておいてください。 ですから,回答というより,参考意見として見ていただく方が良いと思います。 =========================== サンプルで書かれている http://web-mono.net/cl_c/index.htm  のページの「残り時間表示時計」ですが, 表示が "分" までです。 "分" までだと今一つ動きを感じないので,"秒" まで表示させることとして以下を書きます。 また, > できればテキストではなく、画像で表示したい ということですが, とりあえずテキストを表示させるということが作成や検証の第一目標です。 テキストを表示させることをメインに, スクリプトを進化させながら順を追って説明します。 > 「今日の残り時間を表示する」時計を作りたいのですが、 最初にこの "今日の残り時間" の考え方ですが, 私は,"明日までの残り時間" と考えました。 明日の 0時0分0.000秒 と,今日の 24時0分0.000秒 は同じ時刻だからです。 この最初の考え方からして,行かれている学校とは違う考え方かもしれません。 まず, Flash で新規ドキュメントを作成し, ステージ上に「remainHour」というインスタンス名(変数名ではありません)のダイナミックテキストフィールドと, 「remainMinutes」というインスタンス名のダイナミックテキストフィールドと, 「remainSeconds」というインスタンス名のダイナミックテキストフィールドの3つを用意します。 テキストフィールドの文字の色は,黒など背景色とは違う色を設定しておいてください。 「remainHour」は「時」,「remainMinutes」は「分」,「remainSeconds」は「秒」を表示させるテキストフィールドです。 そして, フレームに次のように書き,パブリッシュやプレビューすると,まず第一段階の完成です。 ////////////////////////////////////////////////////////////////////// // 目標時刻(日)の時刻オブジェクト goalDate を作成 var goalDate = new Date(2006, 11, 21); // // 1フレーム進む時間ごとに毎回実行 this.onEnterFrame = function() { // 現在の時刻オブジェクト nowDate を作成 nowDate = new Date(); // 差分の時刻オブジェクトの作成 remainDate = new Date(goalDate-nowDate); // 残り時間(時)を表示 remainHour.text = ("0"+remainDate.getUTCHours()).substr(-2, 2); // 残り時間(分)を表示 remainMinutes.text = ("0"+remainDate.getUTCMinutes()).substr(-2, 2); // 残り時間(秒)を表示 remainSeconds.text = ("0"+remainDate.getUTCSeconds()).substr(-2, 2); }; ////////////////////////////////////////////////////////////////////// 今,この回答を書いている "今日" は,2006年12月20日です。 したがって明日は 2006年12月21日です。 ですから,時刻オブジェクトを作成するときの引数として, 「2006, 11, 21」 と書いておくと, 2006年12月21日の0時0分00.000秒の時刻オブジェクトが作成されます。 なぜ 「2006, 12, 21」 ではなくて 「2006, 11, 21」 なのかと言うと, Flash も含め,プログラム全般での月は 0 から始まるからです。 1月は0,2月は1,3月は2,… 12月は11 です。 したがって, 「2006, 11, 21」 になります。 後はだいたい,コメント行(「//」が先頭に付いた行)に書いてある通りです。 substr(-2, 2) とか言う物が登場していますが, これも我流かもしれませんし,順当法かもしれません。 if文をなるべく使いたくないので, 2桁の桁合わせを文字列操作でしています。 先日,このご質問↓に回答するときに,ふと閃いた方法です。 「取得した時間の表示について。」 http://oshiete1.goo.ne.jp/qa2575992.html  ↑教えて!goo  ↓OKWave (同じです) http://okwave.jp/qa2575992.html 以上のものを見るとわかると思いますが, 上のままだと明日(2006年12月21日)以降は使えません。 2006年12月21日 に使おうと思えば1行目を, // 目標時刻(日)の時刻オブジェクト goalDate を作成 var goalDate = new Date(2006, 11, 22); 2006年12月22日 に使おうと思えば1行目を, // 目標時刻(日)の時刻オブジェクト goalDate を作成 var goalDate = new Date(2006, 11, 23); と,毎日手動で変えて,パブリッシュしなおさなければならなくなります。 そこで次に考えるのが "明日" を求める方法になります。 上のスクリプトを次のように書き替えると, 「明日」がわかって更新なしで,ずっと使えるものができます。 ////////////////////////////////////////////////////////////////////// // 現在の時刻オブジェクト nowDate を作成 var nowDate = new Date(); // 現在の年を 変数 myYear に代入 var myYear = nowDate.getFullYear(); // 現在の月を 変数 myMonth に代入 var myMonth = nowDate.getMonth(); // 現在の日を 変数 myDate に代入 var myDate = nowDate.getDate(); // 目標時刻(日)の時刻オブジェクト goalDate を作成 var goalDate = new Date(myYear, myMonth, myDate+1); // // 1フレーム進む時間ごとに毎回実行 this.onEnterFrame = function() { // 現在の時刻オブジェクト nowDate を作成 nowDate = new Date(); // 差分の時刻オブジェクトの作成 remainDate = new Date(goalDate-nowDate); // 残り時間(時)を表示 remainHour.text = ("0"+remainDate.getUTCHours()).substr(-2, 2); // 残り時間(分)を表示 remainMinutes.text = ("0"+remainDate.getUTCMinutes()).substr(-2, 2); // 残り時間(秒)を表示 remainSeconds.text = ("0"+remainDate.getUTCSeconds()).substr(-2, 2); }; ////////////////////////////////////////////////////////////////////// 最初のスクリプトが理解できれば,これも簡単に理解できるはずです。 // 現在の時刻オブジェクト nowDate を作成 var nowDate = new Date(); これで,今現在の時刻オブジェクトを作成しておいて, 「年」,「月」,「日」を取得し, // 目標時刻(日)の時刻オブジェクト goalDate を作成 var goalDate = new Date(myYear, myMonth, myDate+1); に入れているわけです。 手動で, var goalDate = new Date(2006, 11, 21); と書くところを,ActionScript にさせているだけで後は変わりません。 > テキストではなく、画像で表示したいと考えています。 これはたくさんの方法がありすぎます。 それに,普通の時計を習われたとき,すでに作成されたのではないでしょうか? その普通の時計の方法で作るのがBESTだと思います。 1つの方法のヒントとしては, 私だったら, 各フレームごとに 0~10 が描いてある,10フレームあるムービークリップを1つ作成して, コピペで増やして,  ムービークリップ.gotoAndStop(フレーム数) で動かすと思います。 フレーム数 の部分が難しいかもしれませんが, Number() 関数や,substr() を使うと上とほぼ同様な感じで,if文なしでできますよ。 上の場合,「時」,「分」,「秒」の3つのテキストフィールドを用意しますが,ムービークリップは倍の数必要になります。 また,ActionScript の行も その表示させる部分のみ,2倍の行に増えますから, 上のスクリプトで行くと,全体で3行増えるだけだと思います。 > 使っているのはFlash8です。 Flash8 では ActionScript2.0 が使えますが, 上の例は,バキバキの ActionScript1.0 です。 Flash MX 以上だと,どれでも使用可能です。 結局,最後はヒントしか書いていませんが,あとは考えてみてください。 「課題を完成させること」 より 「課題を完成させるために調べたり考えたりすること」 が大切です。

udon2006
質問者

お礼

BlurFiltanさま ご丁寧にどうもありがとうございます。ご指摘の通りでお恥ずかしい限りです…期限まではまだ時間がありますので、教えて頂いたことを参考にして、じっくり考えてみます。 目標時間を明日の0時00分に設定する、というのは考えてもみませんでした。参考になるヒントをどうもありがとうございました。何とか自分の力で完成させたいと思います。 ここで質問を締め切らせて頂きます。目を通してくださった方々も、どうもありがとうございました。

関連するQ&A

  • 残り時間とパソコンの時計

    私はオークション締め切り時間ギリギリに入札します。 残り時間が表示されますがあの時間はオークションサイトの時計でカウントしているのですか。自分のパソコンの時計が遅れていてもそれは気にしないでオークションの時計を見ていればよいですか。

  • 12時間表示の時計

    携帯用のデジタル時計を作っています。 Flash Lite1.1で24時間表示ではなく12時間表示をしたいのですが、携帯電話の仕様に依存してしまうのでしょうか? 自分が考えたのは単純に12時を過ぎるとそこから11時間マイナスされる、という式だったのですが、それだともし12時間表示の設定をしている携帯だと時間がくるってしまうのでしょうか? どなたかご存知でしたら教えてください。

  • flashで正確な時刻のアナログ時計を作りたいです。

    flashで正確な時刻のアナログ時計を作りたいです。 学校のPCにFlash 8 professionalが入っていたので、先日、Allaboutが掲載していた アナログ時計の作り方を使って、私も素人ながらflashの時計を作成致しました。 (参照URL:http://allabout.co.jp/gs/flash/closeup/CU20081010A/) しかし、この時計だと、自分のPCの時刻がずれると同じようにずれてしまう為、出来れば 日本標準時を用いた時計を作成してみたいのですが、上記URLに書かれたActionScriptを どのように工夫すれば解決しますでしょうか?一旦PHPやPerlを経由しなければ難しいでしょうか。 周囲でFlashに詳しい人がほとんどいない為こちらで質問させていただきました。 宜しくお願い致します。

  • 「詳細な残り時間」が表示されない

    YAHOO!オークションで『詳細な残り時間』をクリックしても残り時間が表示されず、空白のままです(通常なら残り時間が表示される部分のバックはグレーになるが、その部分さえ白い)。 解説を読むと、上にある項目から 「ツール(T)」 → 「インターネットオプション(O)」 → 「セキュリティ」 → 「規定のレベル(D)」 → 「OK」 → ・・・・ と進むように記されているのですが、設定する為の説明文はまだまだ続いているに「OK」のボタンを押すとそれで終わりとなり、次に進まないのです。 また、「OK」ボタンを押すと確かに『詳細な残り時間』は表示されるのですが、一旦、Internet explorer を閉じてフリー画面(ネットとつながっていない状態の、起動時の待機画面)にして、再びヤフオクにアクセスするとまた『詳細な残り時間』が表示されなくなるのです。 下のタスクバー(左端にある「スタート」ボタンの隣)にはその画面をアクセスしている状態を示すものが残りますが、再びそのページに入ることも消すこともできず、強引に消そうとすると「このページは応答していません」というエラーメッセージが表示される始末です。 どのようにすれば一回限りではなく、知りたい時にいつでも『詳細な残り時間』が表示できるようになるのですか?

  • オークションの残り時間の表示

    急にオークションの残り時間の表示がされなくなりました 通常、時間がでる所は真っ白な状態です JAVAなども問題なく 「正常な設定です。お使いのオペレーティングシステムに推奨されたバージョン (Version 6 Update 5) の Java がインストールされています。」と出ます 過去のQ&Aを見て「QNo.3871741」と同じだと思い 答えどおりに http://www.harbest.co.jp/news200405.htm を実行しましたが同じでした どうすれば良いでしょうか

  • flashのActionScript3.0 で日数のカウントダウン表示

    flashのActionScript3.0 で日数のカウントダウン表示をやりたいのですが、できません。 たくさんのソースや同じような質問を試してみましたがいっこうに解決しません。 只今、flashのActionScript3.0は習いたてで、基本的なことを含め勉強中なのですが、課題の提出も近いので質問させてください。 ・ダイナミックテキストはcountdown_mcというインスタンス名を指定。 ・2010年8月13日を開催日とし、そこからさかのぼった日数をカウントしたい ・ダイナミックテキスト内にカウントダウンされた日数を表示。 ・開催日には(開催中!)という画像を表示したい 以上の事をやりたいと思いさんざんやってみましたが、出口が見えないので参考ソース、助言をいただけたら幸いです。 よろしくお願いいたします。

  • ActionScriptを学べるサイト

    こんにちわ、kaituといいます。 今Flashのアクションスクリプトを学ぶ為、 「Flash道場」「Flash ActionScript Helper」 のサイトを回っているのですが、 この2つのサイト以外の、 ActionScript解説サイトを探しています。 知っている方いましたら、回答お願いします。

    • ベストアンサー
    • Flash
  • 再生されるFlashを時間によって変えたい。

    現在、クライアントからホームページを見た時間によって、表示されるFlashもしくはjQueryを制作しないうてはなりません。 実際には、午前6時から午後18時までは昼の写真をスライド再生させ、午後18時から午前6時までは夜の写真を再生させるFlash or jQueryが作りたいのですが何か良い方法はないでしょうか? Flashの場合、ActionScriptは2.0を使用します。 利用ソフトはFlash8です。 何か良い方法があればお力をおかしください。よろしくお願いします。

    • ベストアンサー
    • Flash
  • 死ぬまでの時間をカウントダウンしてくれる時計売ってますか?

    だらだら時間を無駄に過ごしてしまうので、 自分を戒めるために、死ぬまでの時間(例えば平均寿命までの残りの時間)を表示してくれる時計って売ってますでしょうか? 変な意味ではなくて、時間には限りがあるという意識を 持つためです。 ※The Death Clockのことではありません。

  • 残り時間の計算

    VB2008 残り時間の計算方法について教えてください。 ユーザーフォーム上に 時刻Label(現在時刻表示) textbox1(締切時刻) textbox2(締切時刻までの残り時間) を配置させています。 ユーザーフォームを開いた時に textbox1に表示している締切時刻までの 残り時間をリアルタイムにtextbox2に表示 させたいのです。(分と秒) 時刻Label(現在時刻表示)の表示は13:00:00 textbox1(締切時刻)の表示例は18:00 残り時間は最大で240分です。 下記のようなコードを書いたのですがエラーになります Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim dtmData1 As DateTime Dim dtmData2 As DateTime Dim dtmData3 As DateTime 時刻Label.Text= TimeString dtmData1 = 時刻Label.Text dtmData2 = textbox1.Text dtmData3 = TimeValue(dtmData1) - (TimeString) textbox2.Text=dtmData3 End Sub よろしくお願いします。