目次

シミュレータ拡張

 Tcl/Tkでは、10msごとにタスクが指定したカウント値を−1します。

 時間を扱うときには、「after」あるいは「clock」を利用して
 時間差を生成するのが定石。

 「after」を使うときには、次のような手続きを使います。

proc show_event {} {
  #
  global ecnt eflag elast
  # show 
  draw_hand
  # handling
  incr ecnt
  # ? complete
  if { $ecnt >= $elast } {
    set eflag 0
  }
  #
  after 1000 show_event
}

 「clock」を使うときには、ms単位であれば、以下の
 コードで時間差を扱います。

proc show_time {} {
  #
  global ecnt eflag elast beginTime currentTime
  # get current time
  set currentTime [clock clicks -milliseconds]
  # judge
  if { [expr $currentTime - $beginTime] > 999 } {
    # update
    set beginTime $currentTime
    # show 
    draw_hand
    # handlign
    if { $eflag == 1 } {
      incr ecnt
      # ? complete
      if { $ecnt >= $elast } {
        set eflag 0
      }
    }
  }
  # 200ms
  after 200 show_time
}

(under construction)

目次

inserted by FC2 system