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