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のサーフェイス説を肯定するような結果であった。