Project1

标题: 雪流星脚本教程第四弹:Window脚本教程一 [打印本页]

作者: 雪流星    时间: 2008-11-19 19:04
标题: 雪流星脚本教程第四弹:Window脚本教程一
本帖最后由 雪流星 于 2010-12-19 15:40 编辑

雪流星脚本教程第四弹:Window脚本教程一

小幽的VX实用脚本查询手册:
VX实用脚本查询手册

说明档:
点此下载


教本讲堂再次开讲喽!!
这次我们来讲Window的绘制

在之前Scene的教程中,我们都是用默认写好的Window来排版和判断而已
现在开始在Window里面绘制我们想要显示的文字或图片。

新建一个工程,把Window_Gold复制一份,贴在main的前面。
把refresh的内容删掉。
进入游戏,开启菜单。
如果你的金钱窗口不是空的话,那麽肯定是你的错,不是我的错,赶快跪下来向电脑忏悔吧!!!


现在在refresh里面添加:
  self.contents.draw_text(0, 0, 120, WLH, $game_variables[1]) # 显示一号变量

self.contents.draw_text(x, y, width, height, text, align) 就是我们用来在窗口中绘制文字用的方法

它的参数为:
x       X座标
y       Y座标
width   宽度
height  高度,一般使用 WLH 就行了
text    要绘制的文字
align   对齐方式(0:靠左对齐 1:居中对齐 2:靠右对齐)

好,测试一下:


金钱窗口显示为0,没错,因为系统变量初始直就是0。可以用Debug修改数值看看。

再来来解释一下每个参数的作用
XY座标这就不用多说了,先讲高度

WLH 是 Window_Base 里面定义的常量,值为 24。
这个数值就是字体大小(20)加上边缘各2像素的大小。
在RMVX中,一个全角字大约占 24X24 像素的大小

所以我们的宽度也要照这个去算
如果不确定会有几个字,可以用
self.contents.text_size(显示文字).width
来计算所需宽度

然後我们现在要在加一句很重要的一句脚本,那就是

self.contents.clear

这句相当於板擦,将「窗口内容」这块「黑板」原先有的字「擦掉」。
如果没有这句的话,新添加的文字就会覆盖在就有文字的上面。
如果我们在Window_Gold里面加上
def update
  refresh
end
然後再进入菜单看看的话,就会发现刚才绘制的文字越变越粗。
如图:

(update那段只是测试,测试完记得删掉)
现在虽然看不出效果,但是还是要加上去以策万全。

最後,我们来让这块「黑板」更加多彩多姿
使用脚本
self.contents.font.color = text_color(n)
可以将以下窗口文字的颜色,设定为窗口外观上第n+1个颜色
为什麽是n+1呢?
因为这些颜色是从 0 开始算起的
所以第一个颜色是0号

如果懒得计算第几个颜色的话,也可以用
self.contents.font.color = Color.new(R, G, B)
至於R、G、B分别是什麽值,可以用下面这两个软件来计算:
http://rpg.blue/viewthread.php?tid=108096
http://rpg.blue/viewthread.php?tid=109833
[LINE]1,#dddddd[/LINE]
其馀显示文字的方法:
[LINE]1,#dddddd[/LINE]
角色相关
绘制角色名称:draw_actor_name(角色, x, y)
绘制角色职业:draw_actor_class(角色, x, y)
绘制角色等级:draw_actor_level(角色, x, y)
绘制角色HP(含血槽):draw_actor_hp(角色, x, y, 宽度)
绘制角色MP(含气槽):draw_actor_mp(角色, x, y, 宽度)
绘制角色能力值:draw_actor_parameter(角色, x, y, 类型)
[LINE]1,#dddddd[/LINE]
参数解释
角色为$game_actor对象,可以用 $game_party.members[N]来指定队伍中第N号角色
x, y 为显示座标
宽度是绘制血/气槽的宽度
类型使用0-3代表 0:攻击  1: 防御   2:精神力  3:敏捷
[LINE]1,#dddddd[/LINE]
绘制物品名称:draw_item_name(物品, x, y, enabled)
绘制金钱数值:draw_currency_value(数值, x, y, 宽度)
[LINE]1,#dddddd[/LINE]
物品是 BaseItem对象,所以物品、技能、武器、防具皆可使用
eneabled是指物品是否半透明化显示(代表无法使用)
数值是指金钱的数值,一般指定 $game_party.gold 即可,当然你也可以使用系统变量
宽度是绘制金钱数值的宽度



今天就说到这里,下次来谈怎麽在窗口中显示图标。



[LINE]1,#dddddd[/LINE]
发布页面:http://rpg.blue/web/htm/news1220.htm
vip+2

              [本贴由 66RPG发布员 于 2008-12-20 0:16:26 进行了编辑]
作者: 塑望    时间: 2008-11-19 19:51
开始学习VX脚本 [LINE]1,#dddddd[/LINE]版主对此帖的评论:『那也没必要挖坟吧』,积分『-0』。这些被扣积分的一半会用于对本帖正确答案的悬赏。
作者: 塑望    时间: 2008-11-19 21:49
{/fd}{/fd}{/fd}{/fd}

哪里挖坟了。。。这个不雪流星刚发的么
作者: 木葬枫    时间: 2008-11-19 22:28
哦…混了混了…被以前的教程先入为主了………
作者: 沉影不器    时间: 2008-11-20 06:37
提示: 作者被禁止或删除 内容自动屏蔽
作者: 雪流星    时间: 2008-11-20 07:12
以下引用沉影不器于2008-11-19 22:37:04的发言:
写得太简单了吧...字数翻个翻还差不多

本来想要写字宽度的算法,
就是当宽度太窄的时候,会自动压缩字体的算法
但是越写越复杂,也离题越远,最後全删掉,只留下:
WLH 是 Window_Base 里面定义的常量,值为 24。
这个数值就是字体大小(20)加上边缘各2像素的大小。
在RMVX中,一个全角字大约占 24X24 像素的大小

所以我们的宽度也要照这个去算
如果不确定会有几个字,可以用
self.contents.text_size(显示文字).width
来计算所需宽度


补充了一些显示文字的方法
作者: 沉影不器    时间: 2008-11-22 18:43
提示: 作者被禁止或删除 内容自动屏蔽




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