RGSS2を知る(13)

Spriteはもともとそのクラスのオブジェクトを内部に持っていて、=付きのメソッドを呼ばれると引数の値を内部オブジェクトにコピーする、ということのようだ。
Bitmapクラスのrectはプロパティとしてではなくメソッドとマニュアルに書いてあり、設定機能はなく取得のみである。
これはメソッド呼び出し時にRectオブジェクトを生成している。

b = Bitmap.new(200,200)

s = Sprite.new
r = s.src_rect
p r                     # => (0,0,0,0)
s.bitmap = b
p r                     # => (0,0,200,200)
p r.equal?(s.src_rect)  # => true

c = s.color
p c                     # => (0,0,0,0)
s.color = Color.new(10,10,10)
p c                     # => (10,10,10,255)
p s.color.equal?(c)     # => true

p b.rect.equal?(b.rect) # => false

あー、すっきりした。