热度 2|
上一讲结束的时候我们提到了物品窗口中特殊的多选项排列形式,究竟它是如何实现的呢,这一讲我们着重讲这一点。
(这一讲的代码不会设计太多,主要讲的是理论性的东西。)
通过前面所学的,我们知道要在一个Window类的对象中描绘一些文字图片就必须先为这个窗口对象创建它的contents,也就是一个Bitmap类的对象,有了这个contents,我们才可以把想要展现出的东西描绘出来。
接着我们知道,如果这个contents的宽度大于窗口的宽度时,在窗口的右边会出现一个指向右边的箭头,同样的情况也发生在宽度超标时。
其实,这个箭头出现的前提是contents有部分位于窗口的外侧,右边和下边位于窗口外侧这两个好理解,那么左边和上边是怎么超出去的呢?这里介绍Window类的一个新的属性ox oy,这两个值负责的是控制窗口中contents属性的起点坐标,在F1里,是这么解释的:
RM的F1:
ox:精灵传送元原点的 X 座标。
oy:精灵传送元原点的 Y 座标。
这个方法里有两部分重点内容,其一是直接定义了光标的宽度和出现的位置,倘若我们自制了一个窗口,而这个窗口的高度并不是默认的32,位置也不是很有规律,那么就可以通过这个方法下手,至于方法,我希望大家能自己看看,因为通过前面的学习应该要看懂这个不是很难,我这里给出一个提示:最关键的代码是最后一句,它直接负责给光标传送坐标及宽高属性的值。其二则是它还负责了整个窗口的内容随这光标进行滚动,具体的代码是包含“self.top_row ”的两行,通过给top_row赋值,制定了当前页面的首行,整个窗口也就跟着滚动起来了。
好了,现在细节部分都说完了,可以说说Window_Item物品窗口的运作了。
我们先来罗列一下物品窗口的特性:
1、物品多的时候自动出现向下的小箭头。
这个很容易实现咯,只要创建的contents的高度大于窗口的高度即可。
2、光标跟随键盘操作
在刚才说到的“更新光标矩形”的方法里已经见到了,通过一句“self.cursor_rect.set”对光标矩形的坐标及宽高进行设置。
3、光标到达窗口最下或最上时,如果下面或上面还有物品,则整个窗口的内容也跟着一起滚动。
这个运用到了刚才说到的top_row的控制,说到底就是窗口ox oy属性的控制。
到这里为止,关于RGSS中窗口类的介绍就基本结束了,结合默认系统中的若干窗口,仔细阅读明白以后相信要弄明白窗口类的代码并不是一件难事,之后,要写出自己的窗口也并不是一件难事。
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-5-2 05:41
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.