赞 | 0 |
VIP | 186 |
好人卡 | 0 |
积分 | 1 |
经验 | 5829 |
最后登录 | 2012-12-21 |
在线时间 | 83 小时 |
Lv1.梦旅人 龙皇
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 83 小时
- 注册时间
- 2007-8-8
- 帖子
- 2956
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
画面及视窗设计基础教学
IN-Depth Scenes&Windows
Chapter 1
Making a Window
视窗製作
前言:
本教程本不属於我自己所写的,而是来自一个老外论坛的教学帖子,
原来的英文原文教学写得很好而且浅显易懂,
但是很可惜的是那位作者在一年前这系列的教学已经不更新(没有完成),
今天我把文章做了译文及修文,方便一些RGSS程式初学者也能学会画面及视窗设计。
如果自认英文达人,欢迎先查看以下原文教学。
以后有时间我也会慢慢把所有画面及视窗设计相关基础教学全都(译文)写出来。
原文 画面及视窗设计 全教学: (By Mr.Mo)
http://www.rmxp.org/forums/index ... 10&topic=5722.0
Lesson 1 利用Window_Base製作游戏视窗
Window_Base就字面上所看到的,就是所有视窗的基础,这裡面包括函式及编码(codes)你可以拿来呼叫及使用来设计专属自己的视窗。
那麼要如何使用Window_Base来製作一个游戏裡的视窗呢?
例如:
class MyCustomWindow < Window_Base
end 如果对物件导向有基础概念的人应该就知道什麼是class(类别),但我还是不会略过去解释它的用途。
◎
class(类)习惯於作為RUBY一个脚本的开始。想像一下,它类似作為一个容器(文件夹)。这个文件夹裡的资料,就是相当于class裡的函式及变数,用途是拿来设计製作脚本(物件方法)。
◎
当為class(类别)命名时,class语句一定要开头处,下面是错误的范例:
◎
这裡的<(小於)表示继承,继承可以让你获取来自不同的没有关係class(类别)的信息。
◎
每一个class(类别)的结束都要用end当结尾。
下一步,我们将学习如何给窗口特点(给窗口做设置);
class MyCustomWindow < Window_Base
#----------------------------------------------------------------------
# 物件的初始设置
#----------------------------------------------------------------------
def initialize
super(x, y, width, height)
self.contents = Bitmap.new(width - 32, height - 32)
end
end ◎
当脚本开始运作时,第一它会先寻找"def initialize";如果找不到,
它会将再寻找"def main";如果还是找不到,那麼程式运作时就可能会出错。
◎
super是被用来呼叫在父类裡相同的函式(方法),
此脚本(类别)的父类就是Window_Base,
这裡的super是被用来呼叫
父类Window_Base裡当中的"def initialize(x, y, width, height)",
只要有了这个就可以设定视窗的大小及位置了。
x => 视窗的水平位置(左上角)
y => 视窗的垂直位置(左上角)
width => 视窗的宽,建议不要超过640否则有一部分会消失不见。
height => 视窗的高,建议不要超过480否则有一部分会消失不见。
◎
self是继承的时候调用父类的方法(但也可以调用自己类的方法,但比较少用,因為直接用method),但这裡必须使用。
◎
self.contents = Bitmap.new(width - 32, height - 32) 是用来创建窗口中的一个图块(bitmap),如此一来就可以..
--显示文字
--显示图片
恭喜你!!这样你就有基本视窗的架构囉
这裡的设置范例是super(100, 100, 200, 200)
P.S.上面的效果范例是必须经过一个有关Scenes的调用,才会有这样的效果,以后会在第二章提及。
Lesson 2 在你的视窗里加上文字
class MyCustomWindow < Window_Base
#----------------------------------------------------------------------
# 物件的初始设置
#----------------------------------------------------------------------
def initialize
super(x, y, width, height)
self.contents = Bitmap.new(width - 32, height - 32)
refresh # 呼叫此类别的刷新函式
end
def refresh
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 20
self.contents.draw_text(x, y, width, height, text)
end
end ◎self.contents.clear
是被用来清理视窗里的内容用的,这是因为 为了防止每次在刷新时,会重复(叠)显示内容它自己。
◎self.contents.font.color = normal_color
是设置视窗里的字体颜色,它只影响在它以后的文字,这表示在视窗里你可以有不同的文字颜色。
◎self.contents.font.size = 20
是设置视窗里的字体大小,它只影响在它以后的文字,这表示在视窗里你可以有不同的文字大小。
◎self.contents.draw_text(x, y, width, height, text)
这是描绘视窗里的所给的文字。
x => 视窗(window)里的X座标位置,非画面(screen)上的座标
y => 视窗(window)里的Y座标位置,非画面(screen)上的座标
width => 一排文字的从左到右的长度,有时很难找到那样适合的长度
height => 一排文字的高度,这通常是32
text => 这里是显示你想给的文字(字串) "I am TEXT. Obey ME!!"
恭喜你!!这样你的视窗里就有文字囉!
这裡的视窗设置范例是super(0, 0, 640, 480)
文字(字串)设置范例是
cx = contents.text_size("I am TEXT. Obey ME!!").width
self.contents.draw_text(50, 50, cx, 32, "I am TEXT. Obey ME!!") cx是什么呢?
cx这段语句可以让我们得到"I am TEXT. Obey ME!!"的字串从左到右的长度。
--第一章 END....待续 |
|