Project1

标题: 关于新建窗口 [打印本页]

作者: 鑫の尘埃    时间: 2015-6-22 22:40
标题: 关于新建窗口
本帖最后由 鑫の尘埃 于 2015-6-22 22:50 编辑

建立窗口是这样的吗?
@bl = Window.new
    @bl.windowskin = RPG::Cache.windowskin("001-Blue01.png")
    @bl.x = x位置
    @bl.y = y位置
    @bl.width = 宽
    @bl.height = 高
    @bl.z = 100
    @bl.contents = Bitmap.new(width-32, height-64 )
    @bl.contents.draw_text(x位置, y位置, 宽, 高, 内容)
然而系统总是报错啊....
还有
假如要在地图ID = 002 显示这个窗口
要在那些地方插入这个脚本呢?

作者: RyanBern    时间: 2015-6-22 23:15
如果是建立功能比较简单的窗口,要使用类似的写法,不过不能使用Window.new这样的写法,应该使用RGSS的Window_Base类。
记得写在 Scene_XXX里面
RUBY 代码复制
  1. @bl = Window_Base.new(x坐标, y坐标, 宽, 高)
  2. @bl.contents = Bitmap.new(@bl.width - 32, @bl.height - 32)
  3. @bl.contents.draw_text(x, y, 宽, 高, 内容[, 对齐方式])

用完这个窗口后,一定要记得释放,一般是在Scene_XXX主循环结束之后就要释放。
如果建立功能比较复杂的窗口,建议单独开一个类。
RUBY 代码复制
  1. class Window_MyWindow < Window_Base
  2.   def initialize
  3.     super(0, 0, 300, 200)
  4.     self.contents = Bitmap.new(width - 32, height - 32)
  5.     refresh
  6.   end
  7.   def refresh
  8.     self.contents.clear
  9.     self.contents.draw_text(4, 0, 160, 32, "测试文字")
  10.   end
  11. end

要使用窗口,例如要在地图场景中,当地图ID为2的时候显示,其他情况下不显示,就要在Scene_Map上修改。
为了使得代码简洁,我们采用alias写法,当然,写好的脚本必须要放在Scene_Map这组脚本之后。
RUBY 代码复制
  1. class Scene_Map
  2.   alias rb_main_20150622 main
  3.   def main
  4.     @test_window = Window_MyWindow.new
  5.     rb_main_20150622
  6.     @test_window.dispose
  7.   end
  8.   alias rb_update_20150622 update
  9.   def update
  10.     @test_window.update
  11.     rb_update_20150622
  12.   end
  13. end

这样窗口算是接入了,但是我们要求只有当地图ID为2的时候才显示,所以我们还需要追加定义下面的脚本。下面的脚本和第一段写Window_MyWindow类的脚本写在一起就好了。
RUBY 代码复制
  1. class Window_MyWindow < Window_Base
  2.   def update
  3.     super
  4.     self.visible = $game_map.map_id == 2
  5.   end
  6. end

上面那段写完就大功告成了!插入试试效果吧。
作者: 鑫の尘埃    时间: 2015-6-23 09:10
本帖最后由 鑫の尘埃 于 2015-6-23 09:28 编辑
RyanBern 发表于 2015-6-22 23:15
如果是建立功能比较简单的窗口,要使用类似的写法,不过不能使用Window.new这样的写法,应该使用RGSS的Wind ...


(σ゚∀゚)σ写得好详细啊!我也能看懂啦!【其实只要复制粘贴就好了吧....
十分的感谢!!
作者: jiushiainilip19    时间: 2015-6-28 08:01
01.@bl = Window_Base.new(x坐标, y坐标, 宽, 高)
[email protected] = Bitmap.new(@bl.width - 32, @bl.height - 32)
[email protected]_text(x, y, 宽, 高, 内容[, 对齐方式])

我要怎么进入这个界面呢  $scene = Scene_Bl .new
                                      $scene = Bl .new  都不对啊啊





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1