jubeon::input::Event - PastFantasy1640/jubeon GitHub Wiki

sfmlのイベントクラス

コールバック関数の形式

void function(sf::Event e)

メンバ関数

Event(graphics::LayerManager * layermanager);

どのウィンドウに対するイベントを取得するかを設定し、Eventインスタンスを生成。インスタンスはEvent側では保持しない。

~Event()

デストラクタ

void setCallback(Callback function);

イベントが発生したときに非同期で呼ばれるかもしれない関数。run関数が走っているスレッドでの実行になる。この関数内ではスレッドセーフな処理をすること。引数にはvoid(sf::Event)な関数をしようし、クラスのメンバなどを指定するときはstd::bind(std::mem_fn(&Foo::Do), &foo)として引数に代入してやるとよい。

void run();

イベントのメイン処理。スレッドは起動させない。ので、もし別スレッドを希望であれば別途記述する必要がある。 Alt + F4で抜けるようにできている。はず。仕様上だとそう。

static bool getInstance(const graphics::LayerManager * layermanager, Event * dst);

インスタンスが保持されていることを前提に、特定のLayerManagerに対応したイベントインスタンスを取得する。留意したいのは、nullptrが帰ってくる場合があるということ。関数の戻り値でも、dstの中身でも判別できる。(戻り値がfalse、dstがnullptr)また、取得するのはポインタなので、インスタンスが削除されれば無効になる。ここでgetした値を保持しても意味はないし、保持してはいけない(戒め)。