2009-05-14
[Ruby]Rubyのグラフィックライブラリの漠然とした案
こんなのどうだろう。
コンセプトは描画オブジェクトのインスタンスをクライアントで保持し続けないことと、あとループ処理を作らずにクロージャー。
WorldServer.start で世界を作る。 あとは描画物を create するとそこに自動的に描画される。 render メソッドとかいらない。
WorldServer.start Image.create('sample.bmp', :x => 100, :y => 100) loop {}
画像を移動させる。
WorldServer.start img = Image.create('sample.bmp', :x => 100, :y => 100) loop { img.x += 1 vsync }
クライアントでインスタンスを保持していなくても、 id があれば描画要素にアクセスできる。 ついでに vsync_callback 。
WorldServer.start id = Image.create('sample.bmp', :x => 100, :y => 100).id vsync_callback { Image.find(id).x += 1 } loop {}
id を記録したらインスタンス保持するのと同じか。じゃあ名前でアクセスとか。
WorldServer.start Image.create('sample.bmp', :name => :sample) vsync_callback { Image.find_by_name(:sample).x += 1 } loop {}
上のコードは下のようにも書ける。
WorldServer.start Image.create('sample.bmp').vsync_callback {|e| e.x += 1 } loop {}
下のように書いてもいい。
WorldServer.start Image.create 'sample.bmp', :vsync_callback => lambda {|e| e.x += 1 } loop {}
x キーで画像をひとつ追加。 z キーで描画要素をすべて削除。
WorldServer.start x = 0 Input.x { Image.create('sample.bmp', :x => x) x += 10 } Input.z { WorldServer.clear } loop {}