设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
楼主: 八云紫
打印 上一主题 下一主题

[RMVX发布] 新手教程--从0开始学RGSS2(2013-09-21 修复索引地址)

  [复制链接]

Lv2.观梦者

梦石
0
星屑
253
在线时间
453 小时
注册时间
2010-4-25
帖子
24
41
发表于 2010-11-22 17:35:23 | 只看该作者
支持啊,一直想学脚本
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
155
在线时间
5 小时
注册时间
2010-12-18
帖子
1
42
发表于 2010-12-18 13:12:15 | 只看该作者
淺顯易懂~      非常支持++
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
278
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

43
 楼主| 发表于 2010-12-18 23:38:06 | 只看该作者
本帖最后由 魔女真利亞 于 2010-12-19 10:12 编辑

Window 类集

基本语法:

  1. class Window_XXX < Window_Base
  2.   def initialize
  3.      super(x, y, w, h)
  4.      ...
  5.   end
  6.   def refresh
  7.     ...
  8.   end
  9. end
复制代码
  • 1. 父类
        一般的窗口可以分成两大类. 一个是带有光标的窗口, 还有一个就是普通的窗口. 两者的父类是不一样的. 一般带有光标的窗口都是直接或者间接的继承于 Window_Selectable . 不带有光标的窗口继承于 Window_Base. 不过需要了解的一点是,所有的窗口的最终父类只能是 Window 类.. 但是 Window 的实现是在其 dll 里的, 所以无源码.
  • 2. 初始化
        对于无光标的窗口: super 都是需要写的. 参数看父类就可以了.
        对于有光标的窗口: 除了要使用 super 以外, 还需要注意这几个变量.
            

              
    • @item_max: 选择项的总个数.
              
    • @column_max: 列数. 也就是说如果等于 2 的话, 会出现左右分开描绘选择项的效果. 具体的可以参照 Scene_Item.
              
    • @index: 当前选择项. 用于取得当前玩家选择的序号.(注意:不是选项内容, 而是序号)
              
  • 3. 刷新
        refresh 方法不是必须的. 大多数的 Window 的 refresh 方法只是在 初始化或者需要刷新的时候才调用. 而不像 update 方法那样每帧调用. refresh 方法里常用的语句就是
    1. self.contents.clear
    复制代码
    清除画布全部内容.只有这样,在接下来需要描绘的内容才不会重复的画在窗口上.
  • 4. 描绘
        窗口类的描述都是在Window_Base 里创建的一个画布上进行的. 也就是 self.contents . 常用的描绘方法参考 Window_Base .需要注意的是, 窗口内容描绘是非常占用刷新时间的. 一般一个描绘内容没帧刷新的话, FPS 就惨不忍睹了.
  • 5. 常用属性
        窗口类常用属性请查找 F1 帮助里的 Window 部分. 所有的 Window 类都可以使用里面的属性.

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5344
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
44
发表于 2010-12-19 08:26:32 | 只看该作者
回复 魔女真利亞 的帖子

1.是Window_XXX < Window_Base,不是Window_XXX < Window
2.update会不断进行,refresh只是靠update辅助。(通常update需要一些条件才进行refresh)
3.initialize是初始化,即最初建立window的动作,比update还要早
4.可著名Window_XXX是子类。
5.super是传输给父类的方法,详细可参考:
http://rpg.blue/thread-162597-1-1.html
注:此贴无恶意,我在此也多多鼓励有能力的前辈多写教程,造福6R!

点评

还好有前辈的说明,不然前面的内容我都看不明白了  发表于 2011-10-23 06:39
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
278
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

45
 楼主| 发表于 2010-12-19 09:30:52 | 只看该作者
本帖最后由 魔女真利亞 于 2010-12-19 09:34 编辑

回复 一箭烂YiJL 的帖子

1. Window 是最终的超类或者父类。这个你看 Window_Base 就知道了。所以我用了一个最终。
2. refresh 是另一个意义上的 update , 只是 refresh 没必要每帧都调用。
3. +1
4. 每明白
5. super 不是说是传输给父类的方法。super 的本意是调用父类的同名方法。 super 后的参数就是父类同名方法的参数。

点评

ls的第四条是注明,你的第四条是没明白  发表于 2011-7-24 20:43

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv2.观梦者 (管理员)

八云紫的式神

梦石
0
星屑
599
在线时间
1243 小时
注册时间
2008-1-1
帖子
4282

烫烫烫

46
发表于 2010-12-19 09:46:46 | 只看该作者
关于窗口的越级继承

在选择写窗口的时候经常会不想要冗余的Window_Selectable#update
比如,我想写一个带光标的窗体,但是控制光标的更新是自己写的,而不想用Window_Selectable的,但是因为是个窗体,所以还是得必须调用Window_Base#update或者Window#update
于是可以这么实现
class Window_Base
  alias update_base update
end
class Window_XXX < Window_Selectable
  def update
   ******
   update_base
  end
end

点评

可以通过 Module#instance_method 方法获取 UnboundMethod,然后 UnboundMethod#bind 绑定到 self 上。  发表于 2010-12-19 11:01
rm for linux(wine)制作中,期待夏娜SAMA能实现到webrm上
回复 支持 反对

使用道具 举报

Lv4.逐梦者

弓箭手?剑兰

梦石
0
星屑
5344
在线时间
833 小时
注册时间
2010-11-17
帖子
1140
47
发表于 2010-12-19 09:56:27 | 只看该作者
回复 魔女真利亞 的帖子

1.这知道,Window_Selectable也属于Window_Base,
Window_Base属于Window,Window属于dll,
那么在脚本库里最终的就是Window_Base
而Window_Base里的super是没有参数的,
所以能用super(x, y, w, h)其实有Window_Base。

2.你说窗口的两大类(也不是很大)~,Window_Selectable继承Window_Base(这句你有说),
既然Window_Base已是脚本库里最终的,何不强调Window_Base呢?
然后后来在添加Window_Selectable、Window_Command、Window_Item这些常用父类。

3.既然dll难以修改,那么我认为要重点放在Window_Base,
这帖是从0学起,我觉得一下子把重点点到dll实在是勉强。

点评

剑兰知道这位是八云么= =  发表于 2010-12-19 12:50
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
278
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

48
 楼主| 发表于 2010-12-19 10:12:21 | 只看该作者
本帖最后由 魔女真利亞 于 2010-12-19 10:13 编辑

回复 一箭烂YiJL 的帖子

1. 好吧。我投降。仅仅只是想说明下被人遗忘的 Window。Window_Base initialize super 居然是空的,这个真没注意~~
2. 有的时候,教程没必要说的太明了。能举一反三才是最好的教程。虽然咱的是渣教程。
3. 这个是中级教程了哦。不过那个 dll 其实只是提一下罢了。没有说它是重点。

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

Lv3.寻梦者

酱油的

梦石
0
星屑
1015
在线时间
2161 小时
注册时间
2007-12-22
帖子
3271

贵宾

49
发表于 2010-12-19 10:20:59 | 只看该作者
從 0 學起就應該從最基礎的學起吧?Window_Base其實提供了很多非必要的功能,對于了解 Window 的實質沒有好處。你甚至可以把 Window_Base 當作一個抽象類,而我認為這一層甚至可以被拋棄——因為他唯一的重點只是提供了windowskin的統一管理而已。
不做頭像做簽名,看我囧冏有神(多謝山人有情提供 )
回复 支持 反对

使用道具 举报

Lv2.观梦者

神隐的主犯

梦石
0
星屑
278
在线时间
271 小时
注册时间
2008-2-22
帖子
7691

贵宾

50
 楼主| 发表于 2010-12-19 10:24:19 | 只看该作者
回复 禾西 的帖子

感觉上 Window_Base 就是虚类。

好多 V

Window_Base 只是中间层。

禾西酱早~~

点评

很有礼貌似的,我也要叫声:"前辈早,打扰您了!"嘻~  发表于 2010-12-19 10:28

《天空之城 —— 破碎的命运》
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-1 08:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表