時間の流れの把握
今回から本格的に"時間"を扱って行きます。その上で基準となる時間の概念について少し触れておく事にしましょう。
iαppliで扱われる時間の最小単位はmsですが、実際に1msずつ管理出来るかと問われると、否と答えざるを得ないでしょう。
何故なら、"処理自体に時間が掛かるから"です。
Thread.sleep()を一定時間以上設けておけば、CPUはその間に演算を済ませます。尤もそれが追い付かなくて結果的に処理落ちを招いたりもするのですが、今回は確実にその処理が間に合っているとしましょう。
今迄Thread.sleep()に送る値は30msで固定だった筈です。実は、これには歴とした理由があるのです。
この30ms毎にtimeフィールドをインクリメントすれば、その値は1/30秒とほぼ等価なものとなるのです。これはつまり、timeが30の倍数値を持つ時に1秒経過するという事です。
1,2,...,29,30=1sec
これを利用して、時間を管理する事が出来ます。具体的には次の様になります。
time+;
if (time >= 30) {
  sec++;
  time = 0;
}
新しいフィールドsecは秒 ―Second―を管理します。
1秒経過する度に1回インクリメントされるのです。
更に、この考えを応用して分 ―Minute―や時間 ―Hour―も同時に管理してみましょう。
time+;
if (time >= 30) {
  sec++;
  time = 0;
  if (sec >= 60) {
    min++;
    sec = 0;
    if (min >= 60) {
      hour++;
      min = 0;
    }
  }
}
time<sec<min<hour
緑の部分が分を、青の部分が時間をそれぞれ管理しています。
この様に、if文を入れ子にすれば簡単に時間を管理する事が出来ます。
ストップウォッチ機能やタイムアタックイベント等でこの時間の管理法を用いると良いでしょう。
inserted by FC2 system