作者共发了2篇帖子。 内容转换:不转换▼
 
点击 回复
460 1
【教程】跟我从头学脚本(十一)
高级弟子 五级
1楼 发表于:2011-2-10 23:44
转载自:www.66rpg.com          

原作者:Dubealex           

        Near Fantastica(特别讲)          

主讲人(翻译):frantice          
电子书制作:小湖 


第十一讲: Scene和Window 专题一


终于开始动手实践创建自己的窗口了^0^, 这讲开始请务必跟着我一起实践^0^, 遇到什么不懂的地方请查看以往的教学~
我们先自己建立个脚本的,名字叫My_Window, 这样今后查看方便,而且测试时候也方便,只用在事件中调用:
My_Window.new 就行了

好了, 现在开始写脚本.
先给它一个父类, 我们这个窗口是不用于选择的, 所以就用Window_Base作为父类.
class My_Window < Window_Base 
 def initialize 
   super(0, 0, 200, 200) 
 end 
end
如果测试的话, 我们会发现它会等一会儿就消失了,这很正常,因为Scene_Map这个东西; 我们没有告诉它要刷新这个窗口.我们待会儿告诉它,我们现在只是建个简单的窗口.
我们用super(x坐标, y 坐标, 宽度, 高度)来建立了一个窗口
上一讲中学习过"super",那我们这里它继承什么东西呢?因为这里 Window_Base是父类, 所以我们看看父类中都初始化了什么东西^0^
def initialize(x, y, width, height) 
super() 
@windowskin_name = $game_system.windowskin_name 
self.windowskin = RPG::Cache.windowskin(@windowskin_name) 
self.x = x 
self.y = y 
self.width = width 
self.height = height 
self.z = 100 
end
这个方法在每个window窗口中都被援引,它定义了窗口的大小,位置,皮肤等等特性. 
那么它后面跟着的def initialize(x, y, width, height)是做什么的呢?
我们看看RMXP的运行过程吧~:
[编译super语句] 
- 接收到 "super" 指令 
--> 在 Window_Base中, 我们设定了以下东西, 用super 发送出去
-> x=0 
-> y=0 
-> width=200 
->height=200 
--> 窗口建成
-回到window 编码
[结束]

好了, 回到刚才编好的窗口, 它很难看, 什么都没有, 总得给它添加点什么吧^  ^

class My_Window < Window_Base 
 def initialize 
   super(0, 0, 200, 200) 
   self.contents = Bitmap.new(width-32, height-32) 
   self.contents.font.name = "黑体"   
   self.contents.font.size = 20 
   self.contents.draw_text(0, 0, 200, 32, "Yay, some text !") 
 end 
end
必须要有3行来添加文字, 因为我们需要写明它的字体, 字号, 以及要写什么东西.3 好了,继续解释每行的原理:
self.contents = Bitmap.new(width-32, height-32) 
这个是干什么的?我们知道了,我们窗口的内容都要是"Bitmap" 类型 (Bitmap不在脚本编辑器中定义). 这样我们就能在窗口中写入文章.
要知道为什么要减去32吗? 因为箭头指着的数据是仍然要被看到, 也许是因为bitmap事实上要比window 大一点吧^0^ .(这也就是文字会被窗口的边缘给咯擦掉的原因啦)
self.contents.draw_text(0, 0, 200, 32, "Yay, some text !")
这行真正地定义了你的文章, 它个格式就是(x坐标, y 坐标, 宽度, 高度,”内容”)

当然,有些文章是用另一个方法来写的,那就是 "refresh". 它只用于当窗口显示的时候需要改变内容的,如 Window_PlayTime (游戏时间), 不过不是 Window_Gold.哦~~

好了, 我们先做个笔记, 下面是我们要做出来的效果图. 我们需要创建3个window啦. 
高级弟子 五级
2楼 发表于:2011-2-10 23:45

回复帖子

内容:
用户名: 您目前是匿名发表
验证码:
(快捷键:Ctrl+Enter)
 

本帖信息

点击数:460 回复数:1
评论数: ?
作者:蓝晶の骑士
最后回复:蓝晶の骑士
最后回复时间:2011-2-10 23:45
 
©2010-2024 Arslanbar Ver2.0
除非另有声明,本站采用知识共享署名-相同方式共享 3.0 Unported许可协议进行许可。