Project1
标题:
请问如何使窗口中显示的变量在每次变量变化时更新?
[打印本页]
作者:
project999
时间:
2009-7-8 09:43
标题:
请问如何使窗口中显示的变量在每次变量变化时更新?
如金钱窗口改成显示变量,
在VX中好象可以用这个$scene.gold_window.refresh if $scene.is_a?(Scene_Map)
那么在XP中应该用什么?
(虽说XP和VX的Game_Variables似乎是一样的……)
作者:
IamI
时间:
2009-7-8 09:45
一样啊……= =
gold_window的attr_accessor写了没有
作者:
project999
时间:
2009-7-8 09:47
attr_accessor?
请问能说得清楚些吗,我脚本不怎么懂。
作者:
project999
时间:
2009-7-8 09:50
attr_accessor?
请问能说得清楚些吗,我脚本不怎么懂。
project999 发表于 2009-7-8 09:47
(突然发现望了使用编辑功能了。。。以后在上面改)
作者:
IamI
时间:
2009-7-8 09:55
写一个范例给你看算了,10min= =
作者:
IamI
时间:
2009-7-8 10:08
←此人无良连贴,
不知道你之前的VX方法是怎么工作的……这里随手写了一个“主流”的变量监控,主要的是比较省CPU,因为只有变量改变的时候refresh了一次
PS:写的是在地图上的一个窗口,进入游戏即可看见
#==============================================================================
# ■ Window_Veri
#------------------------------------------------------------------------------
# 显示变量1的窗口。
#==============================================================================
# 说明:基本原理如下。Scene每帧调用一次这里的update方法,
# update检查变量1是否改变,如果改变那么刷新画面。
class Window_Veri < Window_Base
#--------------------------------------------------------------------------
# ● 初始化窗口
#--------------------------------------------------------------------------
def initialize
super(0, 0, 160, 64)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# ● 刷新
#--------------------------------------------------------------------------
def refresh
#================加入===============
@lastvalue = $game_variables[1]
#===================================
self.contents.clear
self.contents.draw_text(self.contents.rect,$game_variables[1].to_s)
end
#--------------------------------------------------------------------------
# ● 重要,修改
#--------------------------------------------------------------------------
def update
refresh if @lastvalue != $game_variables[1]
end
#===========================================================================
end
# 下面是Scene_Map接入,
# 如果你看不懂这段内容可以不看,
# 注意上面的内容以及下面的Update即可
class Scene_Map
alias old_main main
def main
@veri = Window_Veri.new
old_main
@veri.dispose
end
alias old_update update
def update
old_update
#==================重要=====================
@veri.update
#===========================================
end
end
复制代码
作者:
project999
时间:
2009-7-8 10:26
不行啊,其他地方也被改了,脚本出错
(有在事件里用的刷新方法么……)
作者:
IamI
时间:
2009-7-8 10:41
事件刷新法就是按照之前的方法
先加脚本
class Scene_Map
attr_accessor :gold_window
end
然后就如LZ所说公共事件并行调用
$scene.gold_window.refresh if $scene.is_a?(Scene_Map)
不过……你有在Scene_Map里面加gold_window不……= =
作者:
project999
时间:
2009-7-8 13:15
加了...
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1