赞 | 5 |
VIP | 71 |
好人卡 | 22 |
积分 | 6 |
经验 | 32145 |
最后登录 | 2013-8-9 |
在线时间 | 184 小时 |
Lv2.观梦者 天仙
- 梦石
- 0
- 星屑
- 620
- 在线时间
- 184 小时
- 注册时间
- 2008-4-15
- 帖子
- 5023
|
5楼
楼主 |
发表于 2007-8-5 08:10:06
|
只看该作者
第四节 窗口部分(二)「窗口文字初始化和排版」
上次在修改显示文字之后,会发现「刻」显示正常,「时」、「日」、「月」、「年」却一直到『轮到它们』的时候才出现。这是由于我们在脚本中没有初始化变量的原因,所以变量都从默认的0开始计算,而我们所设置的文字显示数组中,0显示为””。
要避面这种错误,就在initialize方法中初始化所有变量,在初始化的时候,你可以根据剧情把它们订为任何数字。本教程中把所有变量初始化为1。
在initialize中的refresh前面加上:
$game_variables[1] = 1
$game_variables[2] = 1
$game_variables[3] = 1
$game_variables[4] = 1
$game_variables[5] = 1
现在变量的部分修改结束了,我们把时间换算率改正常一点。(不然一年32秒太快了吧?)
刻 = 40祯 时 = 6刻 日 = 12时 月 = 30日 年 = 12月
数组的地方也修改好。
@total_sec = Graphics.frame_count
if @total_sec % 40 ==0
$game_variables[1] += 1
end # end if @total_sec % 40 ==0
if $game_variables[1] >= 6 + 1
$game_variables[1] = 1
$game_variables[2] += 1
end # end if $game_variables[1] >= 6 + 1
if $game_variables[2] >= 12 + 1
$game_variables[2] = 1
$game_variables[3] += 1
end # end if $game_variables[2] >= 12 + 1
if $game_variables[3] >= 30 + 1
$game_variables[3] = 1
$game_variables[4] += 1
end # end if $game_variables[3] >= 30 + 1
if $game_variables[4] >= 12 + 1
$game_variables[4] = 1
$game_variables[5] += 1
end # end if $game_variables[4] >= 12 + 1
text_min = ["", "初刻", "二刻", "三刻", "四刻", "五刻", "六刻"][$game_variables[1]]
text_hour = ["", "子时", "丑时", "寅时", "卯时", "辰时", "巳时",
"午时", "未时", "申时", "酉时", "戌时", "亥时"][$game_variables[2]]
text_day = ["", "初一", "初二", "初三", "初四", "初五", "初六",
"初七", "初八", "初九", "初十", "十一", "十二",
"十三", "十四", "十五", "十六", "十七", "十八",
"十九", "二十", "二十一", "二十二", "二十三", "二十四",
"二十五", "二十六", "二十七", "二十八", "二十九",
"三十"][$game_variables[3]]
text_month = ["", "一月", "二月", "三月", "四月", "五月", "六月",
"七月", "八月", "九月", "十月", "十一月", "十二月"][$game_variables[4]]
text_year = ["", "第一年", "第二年"][$game_variables[5]]
注意!!为了增加脚本的可视度和可修改度,我在 , 后面换行。
是不是这样就结束了呢?No!!
把月份初始化为11,再测试游戏。囧,为什么「月」字和「初」字会重迭呢?
因为「月」的文字坐标超过了「日」的坐标。其实解决方法有好几个,例如:
1. 把「十一」和「十二」打成半角的11和12。但是这样显的风格不协调。
2. 修改「日」的坐标,让它远离「月」。但是这样在正常的情况下会显的离得太远。
3. 修改「月」的文字宽度。但是这样显示起来不美观。
4. 「坐标加法排版法」,就是在一定情况下,把坐标加上一定数字。算法比较麻烦,而且也不适合我们现在用的字符串数组。用「坐标加法排版法」要用条件分歧比较好。
5. 「字符串加法排版法」,就是把一堆字符串全加在一起,最适合现在的情况。
字符串加法排版法就是把前面我们所定义的字符串通通加在一起,成为一个字符串。这个方法在全部的字符串都要横着排成一个长长的字符串的时候最有效的排版方法──譬如说现在。
怎么把字符串加起来呢?数字怎么加,字符串就怎么加。
在self.contents.clear前面加上
text_all = text_year + " " + text_month + " " + text_day + " " + text_hour + " " + text_min
注意中间的 ” “ 就是字符串间所留的空格。还有,记得把原来显示文字的脚本注释掉(如果不打算做更华丽的效果可以直接删掉。)再加上
self.contents.draw_text(5, -5, 640, 32, text_all)
好了,这样就算月份有十几个字也不会与日重迭(只是被挤到屏幕范围外而已=_=||)
到此为止,我们的时间系统已经略有小成。这个时间系统已经能显示游戏时间、显示时间窗口。但是从时间系统能衍生出更多的功能,像是昼夜、天气、星期。也可以在窗口上下功夫,例如隐藏窗口、窗口闪避、暂停时间、版面修改等。不需要那么多功能的人,到此就可以了。
下一节:窗口部分(三)「窗口文字──坐标加法排版」 |
|