ホーム > デベロッパ > SophiaFramework > BREW C++ 逆引きコード集

BREW C++ プログラミング : SophiaFramework 逆引き FAQ・コード集

タイマーを使用する(クラスメンバ関数を使用する場合)

バージョン 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