这个是脚本中关于地图上计时器绘制
#============================================================================== # ■ Sprite_Timer #------------------------------------------------------------------------------ # 显示计时器用的活动块。监视 $game_system 、活动块状态 # 自动变化。 #============================================================================== class Sprite_Timer < Sprite #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- def initialize super self.bitmap = Bitmap.new(88, 48) self.bitmap.font.name = "Arial" self.bitmap.font.size = 32 self.x = 640 - self.bitmap.width self.y = 0 self.z = 500 update end #-------------------------------------------------------------------------- # ● 释放 #-------------------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose end super end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update super # 设置计时器执行中为可见 self.visible = $game_system.timer_working # 如果有必要再次描绘计时器 if $game_system.timer / Graphics.frame_rate != @total_sec # 清除窗口内容 self.bitmap.clear # 计算总计秒数 @total_sec = $game_system.timer / Graphics.frame_rate #这一句就是时间变量除以每秒帧数,算出时间。 # 生成计时器显示用字符串 min = @total_sec / 60 sec = @total_sec % 60 text = sprintf("%02d:%02d", min, sec) # 描绘计时器 self.bitmap.font.color.set(255, 255, 255) self.bitmap.draw_text(self.bitmap.rect, text, 1) end end end
#==============================================================================
# ■ Sprite_Timer
#------------------------------------------------------------------------------
# 显示计时器用的活动块。监视 $game_system 、活动块状态
# 自动变化。
#==============================================================================
class Sprite_Timer < Sprite
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super
self.bitmap = Bitmap.new(88, 48)
self.bitmap.font.name = "Arial"
self.bitmap.font.size = 32
self.x = 640 - self.bitmap.width
self.y = 0
self.z = 500
update
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 设置计时器执行中为可见
self.visible = $game_system.timer_working
# 如果有必要再次描绘计时器
if $game_system.timer / Graphics.frame_rate != @total_sec
# 清除窗口内容
self.bitmap.clear
# 计算总计秒数
@total_sec = $game_system.timer / Graphics.frame_rate #这一句就是时间变量除以每秒帧数,算出时间。
# 生成计时器显示用字符串
min = @total_sec / 60
sec = @total_sec % 60
text = sprintf("%02d:%02d", min, sec)
# 描绘计时器
self.bitmap.font.color.set(255, 255, 255)
self.bitmap.draw_text(self.bitmap.rect, text, 1)
end
end
end
Spriteset_Map 是绘制地图的
这个里面有三句关于计时器的
# 生成计时器块
@timer_sprite = Sprite_Timer.new
# 释放计时器块
@timer_sprite.dispose
释放(就是删除的意思吧)
# 刷新计时器块
@timer_sprite.update
刷新,就是让计时器动
举个例子。
#============================================================================== # ■ Sprite_Timer 2 #------------------------------------------------------------------------------ # 显示计时器用的活动块。监视 $game_system 、活动块状态 # 自动变化。 #============================================================================== class Sprite_Timer2 < Sprite #-------------------------------------------------------------------------- # ● 初始化对像 #-------------------------------------------------------------------------- def initialize super self.bitmap = Bitmap.new(88, 48) self.bitmap.font.name = "Arial" self.bitmap.font.size = 32 self.x = 640 - self.bitmap.width * 2 self.y = 0 +64 #y坐标64 self.z = 500 update end #-------------------------------------------------------------------------- # ● 释放 #-------------------------------------------------------------------------- def dispose if self.bitmap != nil self.bitmap.dispose end super end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update super # 设置计时器执行中为可见 self.visible = $d # 如果有必要再次描绘计时器 if $s / Graphics.frame_rate != @total_sec # 清除窗口内容 self.bitmap.clear # 计算总计秒数 @total_sec = $s / Graphics.frame_rate #这一句就是时间变量除以每秒帧数,算出时间。 # 生成计时器显示用字符串 min = @total_sec / 60 sec = @total_sec % 60 text = sprintf("%02d:%02d", min, sec) # 描绘计时器 self.bitmap.font.color.set(255, 255, 255) self.bitmap.draw_text(self.bitmap.rect, text, 1) end end end
#==============================================================================
# ■ Sprite_Timer 2
#------------------------------------------------------------------------------
# 显示计时器用的活动块。监视 $game_system 、活动块状态
# 自动变化。
#==============================================================================
class Sprite_Timer2 < Sprite
#--------------------------------------------------------------------------
# ● 初始化对像
#--------------------------------------------------------------------------
def initialize
super
self.bitmap = Bitmap.new(88, 48)
self.bitmap.font.name = "Arial"
self.bitmap.font.size = 32
self.x = 640 - self.bitmap.width * 2
self.y = 0 +64 #y坐标64
self.z = 500
update
end
#--------------------------------------------------------------------------
# ● 释放
#--------------------------------------------------------------------------
def dispose
if self.bitmap != nil
self.bitmap.dispose
end
super
end
#--------------------------------------------------------------------------
# ● 刷新画面
#--------------------------------------------------------------------------
def update
super
# 设置计时器执行中为可见
self.visible = $d
# 如果有必要再次描绘计时器
if $s / Graphics.frame_rate != @total_sec
# 清除窗口内容
self.bitmap.clear
# 计算总计秒数
@total_sec = $s / Graphics.frame_rate #这一句就是时间变量除以每秒帧数,算出时间。
# 生成计时器显示用字符串
min = @total_sec / 60
sec = @total_sec % 60
text = sprintf("%02d:%02d", min, sec)
# 描绘计时器
self.bitmap.font.color.set(255, 255, 255)
self.bitmap.draw_text(self.bitmap.rect, text, 1)
end
end
end
然后在这三句后面各加上一句,
# 生成计时器块
@timer_sprite = Sprite_Timer.new
# 释放计时器块
@timer_sprite.dispose
# 刷新计时器块
@timer_sprite.update
各变成
# 生成计时器块
@timer_sprite = Sprite_Timer.new
@timer_sprite2 =Sprite_Timer2.new
# 释放计时器块
@timer_sprite.dispose
@timer_sprite2.dispose
# 刷新计时器块
@timer_sprite.update
@timer_sprite2.update
然后Game_System中
def initialize
@map_interpreter = Interpreter.new(0, true)
@battle_interpreter = Interpreter.new(0, false)
@timer = 0
@timer_working = false
@save_disabled = false
@menu_disabled = false
@encounter_disabled = false
@message_position = 2
@message_frame = 0
@save_count = 0
@magic_number = 0
$s=0 #修改
$d=true #修改
end
def update
# 计时器减 1
$s +=1 if $d ==true #修改
if @timer_working and @timer > 0
@timer -= 1
end
end
于是,当$d=true时就开始计时 $s值改变,一个计时器就做出来了。
|