Timer (クラス)
public Timer {inherits EventTarget}
インポート元: CURL.GUI.STANDARD. package 内で定義されています CURL.GUI.BASE.

アニメーションの実装とモニタリングをサポートするオブジェクトです。

説明

Timer は、定期的な間隔または指定した回数コードを繰り返して実行するための機能を提供します。TimerEvent のターゲットとなってこの機能を果たします。
Timer がアクティブの間は、コンストラクタに提供された情報を使い、それ自体で TimerEvent を発生させます。
TimerEvent はそれぞれの Timer で発生するため、Timer ごとに TimerEvent を処理するイベント ハンドラが 1 つずつ必要になります。これには TimerEvent への応答として実行されるコードが含まれます。
Timer.enabled?Timer.repeatTimer.interval または Timer.frequency のいずれかを設定した場合、Timerリセットされます。これは、新しい間隔が直ちに開始し、Timer.interval の指定時間が経過するまでは Timer がアクティブなので、次の TimerEvent が発生しないことを意味します。
注意: グラフィック オブジェクトの操作に未加工の Timer を使わないでください。これは、Timer の管理に不備があると CPU とメモリ リソースを予想外に消費する恐れがあるためです。代わりに Visual.animate を使用してください。ゲッター Timer.active? (下記) の注意を参照してください。

予期されたイベント

TimerEvent: タイマーそのもので Timer により発生されます。

次の例では、出力メッセージを 10 回スワップします。
{value
    let msg:Dynamic = {Dynamic "Just waiting around"}
    let cnt:int = 0
    {HBox
        {CommandButton label="Go",
            {on Action do
                let t:Timer =
                    {Timer
                        interval = .3s,  repeat = 10,  delay = 0s,
                        {on TimerEvent do
                            set cnt = cnt + 1
                            {if cnt mod 2 != 0 then
                                set msg.value = "timer fired"
                             else
                                set msg.value = "waiting out the odd times"
                            }
                        }
                    }
            }
        },
        {Fill width = 1cm},
        {TextFlowBox {value msg}}
    }
}

コンストラクタ
default:Timer を作成します。
コンストラクタ public {Timer.default
enabled?:bool = true,
repeat:int = -1,
interval:Time = -1s,
frequency:Frequency = -1fps,
when:#DateTime = null,
delay:Time = -1s,
on-timer-event:EventHandler
}

プロパティ
active?:Timer が将来 TimerEvent を発生させる必要がある場合は true になります。
アクセサ public final inline Timer.active?:bool
enabled?:タイマーを有効にするかどうかを指定します。
アクセサ public final inline Timer.enabled?:bool
セッター public Timer.enabled?:bool
frequency:イベントが発生する頻度です。
アクセサ public final inline Timer.frequency:Frequency
セッター public Timer.frequency:Frequency
interval:TimerEvent が発生する間隔です。
アクセサ public final inline Timer.interval:Time
セッター public Timer.interval:Time
repeat:タイマーが TimerEvent を発生する回数です。
アクセサ public final inline Timer.repeat:int
セッター public Timer.repeat:int
プロパティ 継承 EventTarget: event-handlers

メソッド
disable:タイマーを無効にします。
public {Timer.disable}:void
enable:タイマーを有効にします。
public {Timer.enable when:#DateTime = null, delay:Time = -1s}:void
メソッド 継承 EventTarget: accepts-event-class?, add-event-handler, event-handler-present?, handle-event, remove-event-handler, verify-event
メソッド 継承 BasicEventTarget: enqueue-event
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {Timer.default
enabled?:bool = true,
repeat:int = -1,
interval:Time = -1s,
frequency:Frequency = -1fps,
when:#DateTime = null,
delay:Time = -1s,
on-timer-event:EventHandler
}

Timer を作成します。

enabled?: Timer.enabled? の初期値です。
repeat: Timer.repeat の初期値です。
interval: Timer.interval の初期値です。
frequency: Timer.frequency の初期値です。
when: 値が null 以外で、enabled?true、さらに repeat が 0 以外の場合、最初の TimerEvent が発生する時刻を指定します。
delay: 値が負ではなく、whennullenabled?true、さらに repeat が 0 以外の場合は、Timer の作成時から最初の TimerEvent が発生するまでの間の待ち時間の長さを指定します。

これを 0s に設定すると、直ちに発生します。
on-timer-event: TimerEvent のイベント ハンドラです。

注意事項

interval または frequency のいずれかに対して (両方ではなく)、有効 (正の) 値を提供する必要があります。

whennulldelay が負 (既定) である場合、最初の TimerEvent は、Timer.interval が経過した後に発生します (Timer が有効であることを前提とする)。

タイマーに対する on-timer-event イベント ハンドラが未処理の例外をスローすると、タイマーは無効になります。これを回避するには、ダイナミック イベント ハンドラのコードを try/catch ペアでラップします。

let count:int = -1
let array:{Array-of int} = {new {Array-of int}, 1, 2, 3}
let timer:Timer =
    {Timer
        enabled?=true,
        repeat=4,
        interval=1s,
        {on TimerEvent do
            {try
                set count = count + 1
                {output array[count]}
             catch e:Exception do
                || Handle exception here
            }
        }
    }



プロパティ詳細
active? (アクセサ)
アクセサ public final inline Timer.active?:bool

Timer が将来 TimerEvent を発生させる必要がある場合は true になります。

説明

Timer.enabled?true かつ Timer.repeat がゼロ以外の値である場合に限り、Timer. active? は true になります。
注意: アクティブな Timer はガーベッジ コレクションされません。Timer は、アプリケーションで未使用の状態でも、あるいは可視的に認識可能なことを実行しなくても、メモリと CPU リソースの両方を消費します。さらに、アクティブな TimerTimerEvent EventHandler が参照するすべてのオブジェクトもガーベッジ コレクションの対象になりません。たとえば、破棄された View 内に Graphic の色を繰り返し変更させる Timer があるとします。この Timer の存在によって、Graphic だけでなくこれを含む View および View 内のすべてのオブジェクトもガーベッジ コレクションされなくなります。
未加工の Timer に関する管理の複雑さから免れるには、Visual.animate メソッドを使ってグラフィック オブジェクトを操作することをお勧めします。このメソッドはアニメーションを実行する Timer を作成し、ターゲット Graphic がその View から離されると Timer を無効にします。
Visual.animate の詳細は、『Curl 開発者ガイド』の「アニメーション」の章に掲載されています。


enabled? (アクセサ)
アクセサ public final inline Timer.enabled?:bool
セッター public Timer.enabled?:bool

タイマーを有効にするかどうかを指定します。

説明

詳細については、Timer.active? を参照してください。

注意事項

Timer.enabled? を設定すると、Timer がリセットされます。


frequency (アクセサ)
アクセサ public final inline Timer.frequency:Frequency
セッター public Timer.frequency:Frequency

イベントが発生する頻度です。

注意事項

また、Timer.frequency を設定すると Timer.interval が設定され、Timer がリセットされます。

実際に観測される頻度は、システム ロードにより、多少異なる場合があります。


interval (アクセサ)
アクセサ public final inline Timer.interval:Time
セッター public Timer.interval:Time

TimerEvent が発生する間隔です。

注意事項

また、Timer.interval を設定すると Timer.frequency が設定され、Timer がリセットされます。

実際に観測される間隔は、システム ロードにより多少異なる場合があります。


repeat (アクセサ)
アクセサ public final inline Timer.repeat:int
セッター public Timer.repeat:int

タイマーが TimerEvent を発生する回数です。

説明

アクティブな Timer は、タイマーそのものにおいて、Timer.repeat で指定された回数だけ、TimerEvent を発生させます。

Timer.repeat が 0 の場合、Timer はアクティブではないため、TimerEvent は発生しません。

Timer.repeat が負の場合、Timer は、それがアクティブの間 (Timer.enabled? が true である限り) TimerEvent を発生し続けます。

Timer.repeat が正の場合、Timer はその回数だけ、TimerEvent を発生します。このとき、各 TimerEvent が発生する直前に、1 だけ Timer.repeat が減少します。

詳細については、Timer.active? を参照してください。





メソッド詳細
disable (メソッド)
public {Timer.disable}:void

タイマーを無効にします。

注意事項

このメソッドを呼び出すと、タイマーがリセットされます。


enable (メソッド)
public {Timer.enable when:#DateTime = null, delay:Time = -1s}:void

タイマーを有効にします。

when: 値が null 以外の場合、最初に TimerEvent が発生するのがいつかを指定します (Timer がアクティブであることを前提とする)。
delay: 値が負ではなく、whennull の場合は、Timer の作成時から最初の TimerEvent が発生するまでの待ち時間の長さを指定します (Timer がアクティブであることを前提とする)。

これを 0s に設定すると、直ちに発生します。

説明

詳細については、Timer.active? を参照してください。

注意事項

このメソッドを呼び出すと、タイマーがリセットされます。