Window

Window

RGSS組み込みクラス

ウィンドウを表示するためのクラスです。

windowskinプロパティにウィンドウスキン素材規格に合わせたグラフィックを指定することにより、枠表示や、ウェイトカーソル表示を行うことが可能です。

contentプロパティに表示されるBitmapのサイズは、Windowのサイズより縦、横ともに32ドット少なくなります。これはウィンドウ枠の幅がそれだけあるためです。

サンプル:Windowクラスを利用したメッセージ表示用クラス

class Msg
  def initialize
    @window = Window.new
    @window.x = 0
    @window.y = 416
    @window.width = 640
    @window.height = 64
    @window.z = 100
    @window.contents = Bitmap.new(@window.width - 32, @window.height - 32)
    @window.windowskin=RPG::Cache.windowskin("001-Blue01")
    set_opacity(0)
    @window.visible = false
  end
  def print(text)
    @window.contents.draw_text(0,0,@window.width - 32, 32, text)
    @window.visible = true
    set_opacity(100)
    set_opacity(200)
    set_opacity(225)
    @window.pause = true
    loop {
      Input.update
      if Input.trigger?(Input::C)
        break
      end
      @window.update
      Graphics.update
    }
    @window.pause = false
    set_opacity(200)
    set_opacity(100)
    set_opacity(50)
    @window.visible = false
    @window.contents.clear
  end
  def set_opacity(x)
    @window.opacity = x
    @window.contents_opacity = x
    @window.back_opacity = x
    @window.update
    Graphics.update
  end
end


サンプル2

cursor_rectとかactiveとかも使ってみました。

class SelectMsg
  def initialize
    @window = Window.new
    @window.x = 0
    @window.y = 0
    @window.width = 640
    @window.height = 96
    @window.z = 100
    @window.contents = Bitmap.new(@window.width - 32, @window.height - 32)
    @window.windowskin=RPG::Cache.windowskin("001-Blue01")
  end
  def print(text)
    @window.contents.draw_text(0,0,@window.width - 32, 32, text)
    @window.cursor_rect = Rect.new(0,0,@window.width - 32,32)
    @window.active = true
    loop {
      Input.update
      if Input.trigger?(Input::C)
        break
      end
      if Input.trigger?(Input::DOWN)
        @window.cursor_rect.y = 32
      end
      if Input.trigger?(Input::UP)
        @window.cursor_rect.y = 0
      end
      @window.update
      Graphics.update
    }
    @window.active = false
    @window.contents.clear
  end
end

selectmsg = SelectMsg.new

selectmsg.print "test"