赞 | 0 |
VIP | 0 |
好人卡 | 2 |
积分 | 1 |
经验 | 175482 |
最后登录 | 2014-1-10 |
在线时间 | 27 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 27 小时
- 注册时间
- 2008-2-13
- 帖子
- 1740
|
举个例子
class Window_Base < Window
alias xrxs_mp7_initialize initialize
def initialize(x, y, width, height)
xrxs_mp7_initialize(x, y, width, height)
if $scene.is_a?(Scene_Menu) or
$scene.is_a?(Scene_Item) or
$scene.is_a?(Scene_Skill) or
$scene.is_a?(Scene_Equip) or
$scene.is_a?(Scene_Status)
self.back_opacity = 0
end
end
end
短小点的例子.
alias xrxs_mp7_initialize initialize #为老方法定义新的别名
xrxs_mp7_initialize(x, y, width, height) #先调用老方法,相当于把老方法重写了一遍
if $scene.is_a?(Scene_Menu) or
$scene.is_a?(Scene_Item) or
$scene.is_a?(Scene_Skill) or
$scene.is_a?(Scene_Equip) or
$scene.is_a?(Scene_Status)
self.back_opacity = 0 #————这个数值可调,为透明程度0为完全透明
end
增加新的内容
那么,以后调用window_base的时候,实际上是调用现在新的initialize.
怎么说呢,首先,基本上这个alias 可以少写原来已有的整段整段的脚本.但是,如果有判断的地方,使用时就要注意了.新加的内容,不可以老方法的条件判断内.
如
def old
if oldx == 0
oldx = 1
end
end
比如,我们如果想改,oldx=0时,oldx=2,不能用以下方法.
alias new old
def old
new
oldx = 2
end
在这个方法下,不管oldx为任何值,都会被赋值2
相当于,执行的是这个过程.
def old
if oldx == 0
oldx = 1
end
oldx = 2
end
所以,alias中,新方法对老方法的调用,是整段调用的,对于条件开关之类,一定要小心. 系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~ |
|