赞 | 0 |
VIP | 7 |
好人卡 | 0 |
积分 | 0 |
经验 | 25385 |
最后登录 | 2015-8-3 |
在线时间 | 1026 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 41
- 在线时间
- 1026 小时
- 注册时间
- 2011-9-10
- 帖子
- 1415
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 y610407721 于 2013-9-7 17:27 编辑
- #==============================================================================
- # ■ Sprite_Timer
- #------------------------------------------------------------------------------
- # 显示计时器用的活动块。监视 $game_system 、活动块状态
- # 自动变化。
- #==============================================================================
- class Sprite_Timer < Sprite
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- super
- @use_decimal = false
- if @use_decimal
- self.bitmap = Bitmap.new(126, 32)
- else
- self.bitmap = Bitmap.new(90, 32)
- end
- 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 * 10 / Graphics.frame_rate != @total_sec
- # 计算总计秒数
- @total_sec = $game_system.timer * 10 / Graphics.frame_rate
- # 生成计时器显示用字符串
- min = @total_sec / 600
- sec = (@total_sec % 600) / 10
- dec = @total_sec % 10
- # 使用小数的情况下,总是刷新
- if @use_decimal
- text = sprintf("%02d:%02d.%1d", min, sec, dec)
- # 不使用小数,只有小数为是0 5 7 8 9时才刷新
- elsif dec > 6 or dec == 0
- text = sprintf("%02d:%02d", min, sec)
- elsif dec == 5
- text = sprintf("%02d %02d", min, sec)
- end
- # 需要刷新的情况下
- if text != nil
- # 清除位图
- self.bitmap.clear
- # 切割时间字符串
- timer_array = text.scan(/./).reverse
- # 从右向左填充
- x = self.bitmap.width - 18
- # 如果10秒内用红色,60秒内用黄色,其他时间用绿色
- if @total_sec < 100
- rect_y = 64
- elsif @total_sec < 600
- rect_y = 32
- else
- rect_y = 0
- end
- # 循环每一个字符填充位图
- is_dec = @use_decimal
- is_changing = true
- for char in timer_array
- if char == ":"
- bitmap.blt(x, 0, RPG::Cache.picture("Timer"),
- Rect.new(180, rect_y, 18, 32))
- elsif char == "."
- bitmap.blt(x, 0, RPG::Cache.picture("Timer"),
- Rect.new(198, rect_y, 18, 32))
- is_dec = false
- elsif char != " "
- timer_x = char.to_i * 18
- # 需要显示完整数字的情况下
- if is_dec or !is_changing or dec < 8
- bitmap.blt(x, 0, RPG::Cache.picture("Timer"),
- Rect.new(timer_x, rect_y, 18, 32))
- # 显示滑动数字
- elsif dec == 9
- timer_x_old = (char.to_i + 1) % 10 * 18
- bitmap.blt(x, 11, RPG::Cache.picture("Timer"),
- Rect.new(timer_x_old, rect_y, 18, 21))
- bitmap.blt(x, 0, RPG::Cache.picture("Timer"),
- Rect.new(timer_x, rect_y + 21, 18, 11))
- is_changing = false if char.to_i < 9
- elsif dec == 8
- timer_x_old = (char.to_i + 1) % 10 * 18
- bitmap.blt(x, 21, RPG::Cache.picture("Timer"),
- Rect.new(timer_x_old, rect_y, 18, 11))
- bitmap.blt(x, 0, RPG::Cache.picture("Timer"),
- Rect.new(timer_x, rect_y + 11, 18, 21))
- is_changing = false if char.to_i < 9
- end
- end
- x -= 18
- end
- end
- end
- end
- end
复制代码 我计时器设置的是并行处理,然后这是我设置的事件:
我设置的是60:00,就是一个小时,但是当计时的时候,计时器前一分钟会很正常从60:00一直到59:00,可是当到59:00的时候,他并没有继续倒计时变成58:59,而是又变回了60:00。。。。就开始这样子的循环了,到底是哪里出了问题,以上是我使用的脚本 QAQ
|
|