SDL_AddTimer

Name

SDL_AddTimer --  タイマを追加します。タイマは指定ミリ秒間経過した後にコールバックを呼び出します。

Synopsis

#include "SDL.h"

SDL_TimerID SDL_AddTimer(Uint32 interval, SDL_NewTimerCallback callback, void *param);

Callback


/*  「新しい」タイマコールバック関数の型定義 */
typedef Uint32 (*SDL_NewTimerCallback)(Uint32 interval, void *param);

Description

タイマを追加します。タイマは指定ミリ秒間経過した後にコールバックを呼び出します。 コールバック関数は現在の時間とSDL_AddTimerの呼び出しで提供されたパラメータを引数に取り、タイマの次の間隔を返します。コールバックの戻り値が引数と同じ場合にはタイマが継続されます。等しくないなら新しいタイマが作られます。

現在有効なタイマを取り消すには、SDL_AddTimerの戻り値であるタイマIDを引数にしてSDL_RemoveTimerを呼び出します。

タイマコールバック関数はメインプログラムと異なるスレッドで実行される場合があります。 そのためコールバック関数内ではどんな関数も呼び出すべきではありません。 しかしながらSDL_PushEventはいつでも呼び出して構いません。

タイマの粒度はプラットフォーム依存ですが最小で10ms程度と考えて下さい。これが最も一般的な数字です。 もし16msのタイマを要求した場合には、コールバックはシステムに呼び出されてから約20ms後に実行されます。 毎秒30フレーム(つまり33msごと)のフレーム更新を行うフラグを設定したい時は30msでタイマを設定すればいいでしょう。(以下の例を見て下さい)

Return Value

追加したタイマのID値を返します。もしエラーがあったらNULLを返します。

Examples

my_timer_id = SDL_AddTimer((33/10)*10, my_callbackfunc, my_callback_param);

See Also

SDL_RemoveTimer, SDL_PushEvent