# = StarFrame::Eventable -- イベント module StarFrame # = Eventableモジュール # イベント駆動を実装するモジュール。 # # 初期化時、終了時、更新時、描画時の処理をメソッド定義として記述できるようになる。 # # また、メソッドチェインを利用して各イベントの前後に他の処理を割り込ませることができる。 module Eventable # 初期化時イベントをコールする。 def call_init *args init *args end # 終了時イベントをコールする。 def call_quit quit end # 更新時イベントをコールする。 def call_update update end # 描画時イベントをコールする。 def call_render render end # 実行する。 # # call_updateと同様です。 # # このメソッドは、procとのダックタイピング用に用意されています。 def call call_update end private # 初期化時にコールされるイベント。 def init *args #:doc: end # 終了時にコールされるイベント。 def quit #:doc: end # 更新時にコールされるイベント。 def update #:doc: end # 描画時にコールされるイベント。 def render #:doc: end def self.included klass #:nodoc: klass.extend ClassMethods end # = Eventable::ClassMethods # Eventableモジュールをincludeすることで追加されるクラスメソッド module ClassMethods # メソッドチェインを作成する。 # # 各種イベントの発生時に別のメソッドを呼ばせることができる。 def alias_method_chain target, feature alias_method "#{target}_without_#{feature}", target alias_method target, "#{target}_with_#{feature}" end end end end