人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

時間が倍の速度で表示されるアナログ時計をFlash(AS2)で作りたいと考えています。
1)午前11時を起点として倍の速度で動く
2)24時間経過して再び午前11時になったらリセットされて11時になる。
という仕様です。

秒針とかアニメーションはおいおいつけていくので良いとして、
計算式をどうしたものかと悩んでいます。
通常ならば1フレーム目でnew Date();関数を使って
現在の時間を取得する繰り返しで時計を作れるかと思うのですが、
1分を30秒にする、1時間を30分にする、というような
時間を倍にしてカウントアップしていく計算式はどうしたものでしょうか。
計算にめっぽう弱いのでご助言お願いいたします。

●質問者: みずぽ
●カテゴリ:ウェブ制作
✍キーワード:24 FLASH アナログ アニメーション カウントアップ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● pahoo
●60ポイント

まず確認ですが、12時間のアナログ時計ですよね。

であれば、たとえば9月24日午前11時にスタートするとすると、以下のような刻み方になります。したがって、とくに午前11時に針の位置をリセットする必要はないですよね。

本当の時刻 正しい時計 倍速時計
24日午前11時 1回転目の11 1回転目の11
24日午後5時 2回転目の5 2回転目の11
24日午後11時 2回転目の11 3回転目の11
25日午前5時 3回転目の5 4回転目の11
25日午前11時 3回転目の11 5回転目の11

計算式ですが、文字通り、針の動きを倍速で進めればOKです。

たとえば、「Flash時計を作る」の中程に針を進めるためのイベント "onEnterFrame" のコードがありますが、倍速時計では時針、分針、秒針の係数を2倍にしてやれば良いのです。

すなわち

_root.hour_t._rotation = (n_date.getHours() * 30 + n_date.getMinutes() / 2) * 2;
_root.minu_t._rotation = n_date.getMinutes() * 6 * 2;
_root.sec_t._rotation = n_date.getSeconds() * 6 * 2;
◎質問者からの返答

わかりやすいご回答ありがとうございます!

複雑に物事を考えすぎていたようです。

午前11時からカウントアップしていって…という方向で考えていましたが、必要なかったですね。

どうもありがとうございました!助かりました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ