イベントタイマー
Siv3D Advent Calendar 2013, 11 日目の記事です。
今日は December 2013 で追加されたイベントタイマー機能を紹介します。
EventTimer は Timer の強化版で、設定したイベント時間の通過を教えてくれます。
イベントの設定は EventTimer::set(event, time)
あるイベントを通過したかどうかは EventTimer::onTriggered(event) で判定します。
EventTimer::clearEvents() するまでイベント情報は消えないので、EventTimer::restart() で何回でもイベントを発生させることができます。
Timer と違い、イベント通過判定のために毎フレーム EventTimer::update() する必要がある点だけ注意してください。
サンプル
# include <Siv3D.hpp> void Main() { Graphics::SetBackground(Palette::Gray); EventTimerMillisec eventTimer; eventTimer.setEvent(L"Red", 2000); eventTimer.setEvent(L"Blue", 6000); eventTimer.setEvent(L"Green", 4000); eventTimer.start(); while (System::Update()) { const unsigned elapsed = eventTimer.update(); if (eventTimer.onTriggered(L"Red")) { Println(L"Red: ", elapsed); Graphics::SetBackground(Palette::Red); } else if (eventTimer.onTriggered(L"Green")) { Println(L"Green: ", elapsed); Graphics::SetBackground(Palette::Green); } else if (eventTimer.onTriggered(L"Blue")) { Println(L"Blue: ", elapsed); Graphics::SetBackground(Palette::Blue); } if (Input::MouseR.clicked) { Println(L"restart"); Graphics::SetBackground(Palette::Gray); eventTimer.restart(); } } }