YKLookTimerWatch
カウンタ自動表示更新機能付きのタイマーオブジェクトです。
時・分・秒の任意のカウンタを表示・操作できます。
数字の表示属性は、プログラム製作者によりカスタマイズできます。
タイマーイベントの送信時間も任意に設定できます。
このクラスのオブジェクト自体は、GUI表示部品ではありません。
プログラム製作者により指定されたラベルオブジェクトに対してカウンタを表示します。
このクラスを使うときは、
swingtimer をロードしてください。
例 |
require 'yklook/swing'
require 'yklook/swingtimer'
|
注意: |
このクラスは追加機能です。当社ライセンスに付属します。
|
クラスメソッド:
new
yk_find_objects
yk_find_objects_frame
yk_look
yk_look_frame
インスタンスメソッド:
yk_add_total
yk_clear
yk_elapsed_time
yk_fire
yk_is_active
yk_reset
yk_set_button_clear
yk_set_button_reset
yk_set_button_start
yk_set_button_stop
yk_set_button_switch
yk_set_label_hour
yk_set_label_min
yk_set_label_sec
yk_set_listener
yk_set_number_icon
yk_set_number_string
yk_set_total
yk_set_trigger
yk_set_updown
yk_start
yk_stop
yk_switch
yk_total
その他の項目:
なし
Object (Ruby 組み込みのクラス。すべてのオブジェクトのスーパークラス)
┃
┗ YKLookSwingBase (YKLook のすべてのGUIオブジェクトの共通クラス)
┃
┗ YKLookTimerWatch (このクラス)
new()
new( sec )
インスタンスを生成します。
引数の
sec は整数で、タイマーの設定時間を秒数で指定します。
引数を省略したときは、別途
yk_set_total()
で指定してください。
実際にタイマーを開始するには
yk_start()
を呼び出してください。
yk_find_objects()
yk_find_objects( tagname )
yk_find_objects( tagname , tagno )
yk_find_objects_frame( frame )
yk_find_objects_frame( frame , tagname )
yk_find_objects_frame( frame , tagname , tagno )
yk_look( tagname )
yk_look( tagname , tagno )
yk_look_frame( frame , tagname )
yk_look_frame( frame , tagname , tagno )
yk_add_total( sec )
タイマーの設定時間を加算します。
この設定時間は、カウンタの自動表示更新で使う時間です。
引数の
sec は整数で秒数を指定します。
以下の例はいずれも同じ意味になります。
例1 |
t = YKLookTimerWatch.new( 60 )
|
例2 |
t = YKLookTimerWatch.new()
t.yk_set_total( 10 )
t.yk_add_total( 20 )
t.yk_add_total( 30 )
|
例3 |
t = YKLookTimerWatch.new()
t.yk_set_total( 60 )
|
yk_clear()
タイマーを初期化します。
具体的には以下の処理をおこないます。
-
タイマーを開始していたら停止する。
-
タイマーの設定時間を無効にする。
-
タイマーの設定時間以外のタイマーイベント送信を無効にする。
-
タイマー経過秒数を0にする。
-
カウンタの表示を更新する。
yk_elapsed_time()
タイマーを開始してからの経過秒数を返します。
このメソッドは、コールバック時にのみ正確な値を返します。
このタイマー自体のコールバック時だけでなく、他のGUIオブジェクトのコールバック時でも正確な値を返します。
yk_fire()
タイマーイベントを送信したときの時間を秒数で返します。
yk_set_updown()
の指定によって秒数の意味が変わります。
以下の例を参考にしてください。
例 |
t = YKLookTimerWatch.new()
t.yk_set_updown( 'up' )
|
この例の場合
yk_fire()
が返す値は、タイマー開始からの経過時間を返します。
例 |
t = YKLookTimerWatch.new()
t.yk_set_updown( 'down' )
|
この例の場合
yk_fire()
が返す値は、タイマー終了までの残り時間を返します。
このメソッドは、このタイマー自体のタイマーイベント送信に伴うコールバック時にのみ正確な値を返します。
yk_is_active()
タイマーが活動中のときは true を返し、そうでなければ false を返します。
一時停止中のときは true を返します。
このメソッドは、コールバック時にのみ正確な値を返します。
このタイマー自体のコールバック時だけでなく、他のGUIオブジェクトのコールバック時でも正確な値を返します。
yk_reset()
タイマーをリセットします。
具体的には以下の処理をおこないます。
-
タイマーを開始していたら停止する。
-
タイマー経過秒数を0にする。
-
カウンタの表示を更新する。
yk_set_button_clear( prm_button )
yk_clear()
を自動的に呼び出すボタンオブジェクトを指定します。
引数の
prm_button は、
YKLookButton
クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接
yk_clear()
を実行します。
引数に
nil を指定すると、この機能を解除します。
このボタンに対してコールバック用メソッドが指定されているときは、先に
yk_clear()
を実行し、その後にコールバック用メソッドを呼び出します。
タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。
yk_set_button_reset( prm_button )
yk_reset()
を自動的に呼び出すボタンオブジェクトを指定します。
引数の
prm_button は、
YKLookButton
クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接
yk_reset()
を実行します。
引数に
nil を指定すると、この機能を解除します。
このボタンに対してコールバック用メソッドが指定されているときは、先に
yk_reset()
を実行し、その後にコールバック用メソッドを呼び出します。
タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。
yk_set_button_start( prm_button )
yk_start()
を自動的に呼び出すボタンオブジェクトを指定します。
引数の
prm_button は、
YKLookButton
クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接
yk_start()
を実行します。
引数に
nil を指定すると、この機能を解除します。
このボタンに対してコールバック用メソッドが指定されているときは、先に
yk_start()
を実行し、その後にコールバック用メソッドを呼び出します。
タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。
yk_set_button_stop( prm_button )
yk_stop()
を自動的に呼び出すボタンオブジェクトを指定します。
引数の
prm_button は、
YKLookButton
クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接
yk_stop()
を実行します。
引数に
nil を指定すると、この機能を解除します。
このボタンに対してコールバック用メソッドが指定されているときは、先に
yk_stop()
を実行し、その後にコールバック用メソッドを呼び出します。
タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。
yk_set_button_switch( prm_button )
yk_switch()
を自動的に呼び出すボタンオブジェクトを指定します。
引数の
prm_button は、
YKLookButton
クラスのオブジェクトです。
この指定により、ボタンを押すと、コールバック用メソッドを介さずに直接
yk_switch()
を実行します。
引数に
nil を指定すると、この機能を解除します。
このボタンに対してコールバック用メソッドが指定されているときは、先に
yk_switch()
を実行し、その後にコールバック用メソッドを呼び出します。
タイマー処理はその特性上、時間的な制約がありますので、コールバックを介さずに直接操作できるようにしています。
yk_set_label_hour( ary )
カウンタの表示に使うラベル(
YKLookLabel
クラス)のオブジェクトを指定します。
このメソッドでは、1時間単位のカウンタを表示するためのラベルを指定します。
1時間単位のカウンタが必要なければ、このメソッドを使う必要もありません。
引数の
ary は配列で、この要素がラベルオブジェクトです。
以下の例を参考にしてください。
例 |
lab = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab )
t = YKLookTimerWatch.new()
t.yk_set_label_hour( [lab] )
|
この例では、ラベルを1個だけ指定しています。
表示すべきカウンタの値が1桁のときも2桁以上のときもこのラベルに表示します。
yk_set_number_string()
や
yk_set_number_icon()
の指定方法によっては、2桁以上になったときの表示が変わります。
例 |
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_hour( [lab1, lab2] )
|
この例では、ラベルを2個指定することで、2桁の時間表示をおこないます。
表示すべきカウンタの値が3桁以上のときは、最上位のラベル内に複数の桁を表示します。
yk_set_number_string()
や
yk_set_number_icon()
の指定方法によっては、3桁以上になったときの表示が変わります。
このラベルを画面上のどこに配置するのかは、プログラム製作者に任されています。
任意の場所に配置してください。
その他、フォントや文字色など、必要に応じて任意の表示属性をラベルに設定してください。
例 |
font = YKLookFont.new( nil, 'plain', 48 )
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
lab1.yk_set_font( font )
lab2.yk_set_font( font )
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_hour( [lab1, lab2] )
|
この例では、サイズが大きいフォントをラベルに指定しています。
yk_set_label_min( ary )
カウンタの表示に使うラベル(
YKLookLabel
クラス)のオブジェクトを指定します。
このメソッドでは、1分単位のカウンタを表示するためのラベルを指定します。
1分単位のカウンタが必要なければ、このメソッドを使う必要もありません。
引数の
ary は配列で、この要素がラベルオブジェクトです。
以下の例を参考にしてください。
例 |
lab = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab )
t = YKLookTimerWatch.new()
t.yk_set_label_min( [lab] )
|
この例では、ラベルを1個だけ指定しています。
表示すべきカウンタの値が1桁のときも2桁以上のときもこのラベルに表示します。
1時間単位の表示用ラベルがあるときは、分表示が60以上になることはありません。
yk_set_number_string()
や
yk_set_number_icon()
の指定方法によっては、2桁以上になったときの表示が変わります。
例 |
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_min( [lab1, lab2] )
|
この例では、ラベルを2個指定することで、2桁の分表示をおこないます。
1時間単位の表示用ラベルがあるときは、分表示が60以上になることはありません。
1時間単位の表示用ラベルがなく、表示すべきカウンタの値が3桁以上のときは、最上位のラベル内に複数の桁を表示します。
yk_set_number_string()
や
yk_set_number_icon()
の指定方法によっては、3桁以上になったときの表示が変わります。
このラベルを画面上のどこに配置するのかは、プログラム製作者に任されています。
任意の場所に配置してください。
その他、フォントや文字色など、必要に応じて任意の表示属性をラベルに設定してください。
例 |
font = YKLookFont.new( nil, 'plain', 48 )
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
lab1.yk_set_font( font )
lab2.yk_set_font( font )
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_min( [lab1, lab2] )
|
この例では、サイズが大きいフォントをラベルに指定しています。
yk_set_label_sec( ary )
カウンタの表示に使うラベル(
YKLookLabel
クラス)のオブジェクトを指定します。
このメソッドでは、1秒単位のカウンタを表示するためのラベルを指定します。
1秒単位のカウンタが必要なければ、このメソッドを使う必要もありません。
引数の
ary は配列で、この要素がラベルオブジェクトです。
以下の例を参考にしてください。
例 |
lab = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab )
t = YKLookTimerWatch.new()
t.yk_set_label_sec( [lab] )
|
この例では、ラベルを1個だけ指定しています。
表示すべきカウンタの値が1桁のときも2桁以上のときもこのラベルに表示します。
1分単位の表示用ラベルがあるときは、秒表示が60を超えることはありません。
yk_set_number_string()
や
yk_set_number_icon()
の指定方法によっては、2桁以上になったときの表示が変わります。
例 |
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_sec( [lab1, lab2] )
|
この例では、ラベルを2個指定することで、2桁の秒表示をおこないます。
1分単位の表示用ラベルがあるときは、秒表示が60を超えることはありません。
1分単位の表示用ラベルがなく、表示すべきカウンタの値が3桁以上のときは、最上位のラベル内に複数の桁を表示します。
yk_set_number_string()
や
yk_set_number_icon()
の指定方法によっては、3桁以上になったときの表示が変わります。
このラベルを画面上のどこに配置するのかは、プログラム製作者に任されています。
任意の場所に配置してください。
その他、フォントや文字色など、必要に応じて任意の表示属性をラベルに設定してください。
例 |
font = YKLookFont.new( nil, 'plain', 48 )
lab1 = YKLookLabel.new()
lab2 = YKLookLabel.new()
lab1.yk_set_font( font )
lab2.yk_set_font( font )
pan = YKLookPanelBox.new( 'x' )
pan.yk_add( lab1 )
pan.yk_add( lab2 )
t = YKLookTimerWatch.new()
t.yk_set_label_sec( [lab1, lab2] )
|
この例では、サイズが大きいフォントをラベルに指定しています。
yk_set_listener( method_name )
コールバック用のメソッドを文字列またはシンボルで指定します。
nil を指定すると、コールバック用メソッドを未指定にします。
名前の先頭が
'yk' で始まるものは指定できません。
コールバック用のメソッドは、プログラム製作者が
YKLookMain
や
YKLookMainFrame
のサブクラスに定義する必要があります。
コールバック用のメソッドには引数がひとつあり、
YKLookEventTimer
クラスのオブジェクトです。
コールバック用メソッドが呼び出されるのは以下のときです。
yk_set_number_icon( ary )
カウンタの表示用ラベルに使うアイコン(画像イメージ。
YKLookImage
クラスのオブジェクト)を指定します。
引数の
ary は配列で、カウンタの0から9に対応するアイコンを指定してください。
デフォルトではアイコンを表示しません。
例 |
img0 = YKLookImage.yk_from_file( 'image0.gif' )
img1 = YKLookImage.yk_from_file( 'image1.gif' )
img2 = YKLookImage.yk_from_file( 'image2.gif' )
img3 = YKLookImage.yk_from_file( 'image3.gif' )
img4 = YKLookImage.yk_from_file( 'image4.gif' )
img5 = YKLookImage.yk_from_file( 'image5.gif' )
img6 = YKLookImage.yk_from_file( 'image6.gif' )
img7 = YKLookImage.yk_from_file( 'image7.gif' )
img8 = YKLookImage.yk_from_file( 'image8.gif' )
img9 = YKLookImage.yk_from_file( 'image9.gif' )
n = [ img0, img1, img2, img3, img4,
img5, img6, img7, img8, img9 ]
t = YKLookTimerWatch.new()
t.yk_set_number_icon( n )
t.yk_set_number_string( [] )
|
この例では、カウンタの表示がアイコンだけになります。
文字列でのカウンタの表示をしないようにするには、この例のように明示的に文字列の指定を空の配列にする必要があります。
配列の最後(
11 番目の要素。インデックスは
10 )に「無効状態」を表示するためのアイコンを追加指定できます。
これは、カウンタのラベルに表示可能な桁数を超えたときに使います。
例えば、時分表示がなく秒数表示用のラベルだけを2個指定している場合にカウンタが99秒を超えたとき、この「無効状態」のアイコンが指定してあれば、そのアイコンを表示します。
例 |
imgx = YKLookImage.yk_from_file( 'image_x.gif' )
n = [ img0, img1, img2, img3, img4,
img5, img6, img7, img8, img9, imgx ]
t = YKLookTimerWatch.new()
t.yk_set_number_icon( n )
t.yk_set_number_string( [] )
|
この例では、カウンタの値が表示桁を超えたときに
imgx を表示します。
カウンタの数字は文字列で表示し「無効状態」のときだけアイコンを指定するには、それ以外の要素を
nil にしてください。
例 |
img = YKLookImage.yk_from_file( 'abcd.gif' )
num = [nil,nil,nil,nil,nil,nil,nil,nil,nil,nil,img]
t = YKLookTimerWatch.new()
t.yk_set_number_icon( num )
|
yk_set_number_string( ary )
カウンタの表示用ラベルに使う文字を指定します。
引数の
ary は配列で、カウンタの0から9に対応する文字列を指定してください。
デフォルトは、
['0','1','2','3','4','5','6','7','8','9'] です。
例 |
n = [ '〇', '一', '二', '三', '四',
'五', '六', '七', '八', '九' ]
t = YKLookTimerWatch.new()
t.yk_set_number_string( n )
|
この例では、カウンタの表示が漢数字になります。
配列の最後(
11 番目の要素。インデックスは
10 )に「無効状態」を表示するための文字を追加指定できます。
これは、カウンタのラベルに表示可能な桁数を超えたときに使います。
例えば、時分表示がなく秒数表示用のラベルだけを2個指定している場合にカウンタが99秒を超えたとき、この「無効状態」の文字が指定してあれば、その文字を表示します。
例 |
n = ['0','1','2','3','4','5','6','7','8','9','-']
t = YKLookTimerWatch.new()
t.yk_set_number_string( n )
|
この例では、カウンタの値が表示桁を超えたときに
'-' を表示します。
カウンタの表示に文字列ではなくアイコン(画像イメージ)だけを使うときはこのメソッドの引数
ary で要素数0の空の配列を指定してください。
yk_set_total( sec )
タイマーの設定時間を指定します。
引数の
sec は整数で秒数を指定します。
例 |
t = YKLookTimerWatch.new()
t.yk_set_total( 180 )
|
この例では、3分の設定時間です。
yk_set_trigger( sec )
タイマーの設定時間以外でタイマーイベントを送信する時間を指定します。
引数の
sec は常に配列です。配列の要素数は任意です。
この配列の要素は整数で秒数を指定します。
カウンタの表示がこの秒数になったときにタイマーイベントを送信しコールバック用メソッドを呼び出します。
言い換えると、
yk_set_updown()
の指定によって秒数の意味が変わります。
以下の例を参考にしてください。
例 |
t = YKLookTimerWatch.new()
t.yk_set_updown( 'up' )
t.yk_set_trigger( [90] )
|
この例では、カウンタの表示が0秒から始まり、設定時間で終わるように表示し、その表示が90秒または1分30秒になったときにタイマーイベントを送信しコールバック用メソッドを呼び出します。
つまりタイマー開始してから90秒後に呼び出します。
例 |
t = YKLookTimerWatch.new()
t.yk_set_updown( 'down' )
t.yk_set_trigger( [90] )
|
この例では、カウンタの表示が設定時間から始まり、0秒で終わるように表示し、その表示が90秒または1分30秒になったときにタイマーイベントを送信しコールバック用メソッドを呼び出します。
つまりタイマー開始後、残り時間が90秒になったときに呼び出します。
このメソッドのデフォルト値は要素数が0の空の配列です。
このとき、タイマーの設定時間以外でタイマーイベントを送信することはありません。
実際に呼び出すコールバック用メソッドの指定には
yk_set_listener()
を使ってください。
yk_set_updown( mode )
カウンタの表示を、0秒から始めて設定時間で終わるように表示するか、設定時間から始めて0秒で終わるように表示するかを指定します。
指定するときは、タイマー開始前に指定してください。
引数の
mode は
true または
false または以下の文字列のいずれかで指定してください。
指定 |
意味 |
true 'UP' |
0から始める(カウントアップタイマー) |
false 'DOWN' |
0で終わる(カウントダウンタイマー) |
文字列で指定するときの英字の大文字小文字はどちらでも受け付けます。
YKLook 内部では英字の先頭1文字だけを見ています。
デフォルトは
false で、0で終わるカウントダウンタイマーです。
このメソッドは
yk_set_trigger()
と
yk_fire()
の意味も変えます。
yk_start()
yk_stop()
タイマーを停止します。厳密に言うと一時停止です。
このとき、タイマーの経過秒数は維持したままですので、この状態で
yk_start()
を実行すると、この秒数からタイマーを再開します。
経過秒数をリセットするには
yk_reset()
を実行してください。
yk_switch()
タイマーが開始されているときは、タイマーを停止(厳密には一時停止)します。
タイマーが停止または一時停止のときは、タイマーを開始(再開も含む)します。
yk_total()
なし
Copyright (c) 2003-2010 YorozuKotowariYa Ltd.