タイマーを使用する(クラスメンバ関数を使用する場合)
バージョン 4.0 以降
class MyClass { private: SFXTimer _timer; // タイマークラス public: Void Function(Void); CALLBACK_DECLARE_SFXTIMER(TimerCallback) }; Void MyClass::Function(Void) { // 4000 ミリ秒後に TimerCallback が呼び出される _timer.Set(CALLBACK_FUNCTION(TimerCallback)); _timer.Schedule(4000); } // 呼び出される関数 CALLBACK_IMPLEMENT_SFXTIMER(MyClass, TimerCallback) { ... }
バージョン 3.0
SFMTYPEDEFCLASS(MyClass) class MyClass { public: Void Function(Void); // タイマーの呼び出し元 Void Callback(Void); // タイマーで呼び出したい関数 // タイマーに登録する関数は static でなければならない static Void CallbackEntry(VoidPtr data); }; Void MyClass::Function(Void) { // タイマーには static 関数を登録する // 第3引数は this とする SFBShell::GetInstance()->SetTimer(4000, CallbackEntry, this); }; // static 関数からメンバ関数を呼び出す Void MyClass::CallbackEntry(VoidPtr data) { static_cast<MyClassPtr>(data)->Callback(); } Void MyClass::Callback(Void) { ... }
参照 SFXTimer::Set | SFXTimer::Schedule |
SFBShell::GetInstance | SFBShell::SetTimer | SFBShell::CancelTimer