RGSS2を知る(5)

まだわからないことだらけ。
今日はViewportとflashメソッド。

bitmap1 = Bitmap.new(100,100)
bitmap1.fill_rect(bitmap1.rect, Color.new(0,0,0,255))

viewport = Viewport.new(0,0,640,480)

s1 = Sprite.new(viewport)
s1.bitmap = bitmap1

s2 = Sprite.new
s2.bitmap = bitmap1
s2.x = 200

loop do
  Input.update
  Graphics.update
  s1.update
  s2.update
  viewport.update
  s1.flash(Color.new(0,255,0,255),120) if Input.trigger?(Input::C)
  s2.flash(Color.new(0,0,255,255),120) if Input.trigger?(Input::B)
  viewport.flash(Color.new(255,0,0,255),120) if Input.trigger?(Input::A)
end

Sprite2つとViewportをフラッシュさせる。片方のSpriteはViewportに関連付けてある。
これを実行すると、緑にフラッシュするViewportに関連付けたSpriteは、Viewportと同時にフラッシュさせるとViewportの方が上、つまり、赤のみの描画になる。
フラッシュの減衰は同時にされているようだ。
また、関連付けてないSpriteはViewportより後に描画されているため、赤の影響は受けない。
同じzのオブジェクトは先に生成された方が先に描画されるとマニュアルには書いてあって、関連付けていないSpriteとViewportはその法則にしたがって処理されているようだ。
ちなみにs2の生成をViewportより前にすると描画順が変わる。
また、Spriteのほうにはzが同じならyが小さいほうが先、と書いてあり、これとViewportの関連はどうかと思ったが、Viewportの範囲のyと比較して描画順を決めるようだ。
関連付けされていないSpriteとViewportの同一性、および、Viewportのサーフェイス説を肯定するような結果であった。