=begin ■ Viewport変更 ver 0.0.0.1 by 半生 http://www.tktkgame.com http://www11.atpages.jp/namahanka/ ■ 概要 XPでも Sprite・WindowクラスのViewportを生成後に変更できるようにします。 ver 0.0.0.1(2010/09/25)  公開 =end class Sprite # Viewport を設定 def viewport=(new_vp) # nil でも Viewport でもない場合は何もしない。 return new_vp unless new_vp.is_a?(Viewport) or new_vp.nil? # viewportが変わってなければ何もしない if self.viewport.object_id == new_vp.object_id return new_vp end # 本処理 # 必要パラメータを退避 _bitmap = self.bitmap _src_rect = self.src_rect _visible = self.visible _x = self.x _y = self.y _z = self.z _ox = self.ox _oy = self.oy _zoom_x = self.zoom_x _zoom_y = self.zoom_y _angle = self.angle _mirror = self.mirror _bush_depth = self.bush_depth _opacity = self.opacity _blend_type = self.blend_type _color = self.color _tone = self.tone # 初期化 self.bitmap = nil Sprite.instance_method(:dispose).bind(self).call() Sprite.instance_method(:initialize).bind(self).call(new_vp) # 退避していたものを復帰 self.bitmap = _bitmap self.src_rect = _src_rect self.visible = _visible self.x = _x self.y = _y self.z = _z self.ox = _ox self.oy = _oy self.zoom_x = _zoom_x self.zoom_y = _zoom_y self.angle = _angle self.mirror = _mirror self.bush_depth = _bush_depth self.opacity = _opacity self.blend_type = _blend_type self.color = _color self.tone = _tone end end class Window # Viewport を設定 def viewport=(new_vp) # nil でも Viewport でもない場合は何もしない。 return new_vp unless new_vp.is_a?(Viewport) or new_vp.nil? # viewportが変わってなければ何もしない if self.viewport.object_id == new_vp.object_id return new_vp end # 本処理 # 必要パラメータを退避 _windowskin = self.windowskin _contents = self.contents.dup _stretch = self.stretch _cursor_rect = self.cursor_rect _active = self.active _visible = self.visible _pause = self.pause _x = self.x _y = self.y _width = self.width _height = self.height _z = self.z _ox = self.ox _oy = self.oy _opacity = self.opacity _back_opacity = self.back_opacity _contents_opacity = self.contents_opacity # 初期化 self.windowskin = nil Window.instance_method(:dispose).bind(self).call() Window.instance_method(:initialize).bind(self).call(new_vp) self.contents.dispose # 退避していたものを復帰 self.windowskin = _windowskin self.contents = _contents self.stretch = _stretch self.cursor_rect = _cursor_rect self.active = _active self.visible = _visible self.pause = _pause self.x = _x self.y = _y self.width = _width self.height = _height self.z = _z self.ox = _ox self.oy = _oy self.opacity = _opacity self.back_opacity = _back_opacity self.contents_opacity = _contents_opacity end end