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里面
@bl = Window_Base.new(x坐标, y坐标, 宽, 高)
@bl.contents = Bitmap.new(@bl.width - 32, @bl.height - 32)
@bl.contents.draw_text(x, y, 宽, 高, 内容[, 对齐方式])
@bl = Window_Base.new(x坐标, y坐标, 宽, 高)
@bl.contents = Bitmap.new(@bl.width - 32, @bl.height - 32)
@bl.contents.draw_text(x, y, 宽, 高, 内容[, 对齐方式])
用完这个窗口后,一定要记得释放,一般是在Scene_XXX主循环结束之后就要释放。
如果建立功能比较复杂的窗口,建议单独开一个类。
class Window_MyWindow < Window_Base
def initialize
super(0, 0, 300, 200)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(4, 0, 160, 32, "测试文字")
end
end
class Window_MyWindow < Window_Base
def initialize
super(0, 0, 300, 200)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
def refresh
self.contents.clear
self.contents.draw_text(4, 0, 160, 32, "测试文字")
end
end
要使用窗口,例如要在地图场景中,当地图ID为2的时候显示,其他情况下不显示,就要在Scene_Map上修改。
为了使得代码简洁,我们采用alias写法,当然,写好的脚本必须要放在Scene_Map这组脚本之后。
class Scene_Map
alias rb_main_20150622 main
def main
@test_window = Window_MyWindow.new
rb_main_20150622
@test_window.dispose
end
alias rb_update_20150622 update
def update
@test_window.update
rb_update_20150622
end
end
class Scene_Map
alias rb_main_20150622 main
def main
@test_window = Window_MyWindow.new
rb_main_20150622
@test_window.dispose
end
alias rb_update_20150622 update
def update
@test_window.update
rb_update_20150622
end
end
这样窗口算是接入了,但是我们要求只有当地图ID为2的时候才显示,所以我们还需要追加定义下面的脚本。下面的脚本和第一段写Window_MyWindow类的脚本写在一起就好了。
class Window_MyWindow < Window_Base
def update
super
self.visible = $game_map.map_id == 2
end
end
class Window_MyWindow < Window_Base
def update
super
self.visible = $game_map.map_id == 2
end
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 |