2007-01-12
[MyGame]add_animation
アニメーションの設定は下記のようなインターフェースを考えていた。
@image.set_animation :down, 12, [ 0, 1, 2, 3] # ↓ 向き @image.set_animation :right, 12, [ 4, 5, 6, 7] # → 向き @image.set_animation :up, 12, [ 8, 9,10,11] # ↑ 向き @image.set_animation :left, 12, [12,13,14,15] # ← 向き
しかし、実際のゲームではより多くのアニメパタンを定義するので、以下のように書きたくなった。
[ [:down, 12, [ 0, 1, 2, 3]], # ↓ 向き [:right, 12, [ 4, 5, 6, 7]], # → 向き [:up, 12, [ 8, 9,10,11]], # ↑ 向き [:left, 12, [12,13,14,15]], # ← 向き ].each {|args| @image.set_animation *args }
でも、だったら最初から複数まとめて定義できるメソッドがあればいいような気がしてきた。
@image.set_animations = [ [:down, 12, [ 0, 1, 2, 3]], # ↓ 向き [:right, 12, [ 4, 5, 6, 7]], # → 向き [:up, 12, [ 8, 9,10,11]], # ↑ 向き [:left, 12, [12,13,14,15]], # ← 向き ]
ふと、まとめて定義したり、ひとつだけ追加したりできるんだったら set じゃなくて add かなあと思った。
@image.add_animation :down, 12, [ 0, 1, 2, 3] # ↓ 向き
それだったら、まとめて定義するのも add かな。
@image.add_animations = animations
--
<< もあり?。
@image.animations << [:down, 12, [ 0, 1, 2, 3]] # ↓ 向き
いや、 Hash の方がいいか?
@image.add_animation :down => [12, [ 0, 1, 2, 3]] # ↓ 向き
あれ、Hash の方がいい気がするぞ。
hash = { :down => [12, [ 0, 1, 2, 3]], # ↓ 向き :right => [12, [ 4, 5, 6, 7]], # → 向き :up => [12, [ 8, 9,10,11]], # ↑ 向き :left => [12, [12,13,14,15]], # ← 向き } @image.add_animation hash
Hash にすると add_animations はいらないのか。