2006-04-12
[MyGame]イベントのサンプル
require 'mygame' include MyGame init_game image = TImage.new('ball.bmp') x, y = 0, 0 add_event(:mouse_motion) {|event| x, y = event.x, event.y } loop_game do image.draw screen, x, y end
こうも書ける。
image = TImage.new('ball.bmp') add_event(:mouse_motion) {|event| image.x, image.y = event.x, event.y } loop_game do image.draw end
デフォルトでループ終了のイベントが2つ登録されている。
add_event(:quit, :cloase) { @@loop_end = true } add_event(:key_down, :cloase) {|e| @@loop_end = true if e.sym == SDL::Key::ESCAPE }
これらを取り除くにはこうする。
remove_event(:quit, :cloase) remove_event(:key_down, :cloase)
__
ちなみにイベント呼び出しはループ内でこう実装されている。
while event = SDL::Event2.poll event.class.name =~ /\w+\z/ name = $&.gsub(/([a-z])([A-Z])/) { "#{$1}_#{$2.downcase}" }.downcase (@@events[name.to_sym] || {}).each {|key, block| block.call(event) } end