赞 | 342 |
VIP | 10 |
好人卡 | 8 |
积分 | 262 |
经验 | 235776 |
最后登录 | 2024-9-23 |
在线时间 | 2387 小时 |
Lv5.捕梦者 (版主) 遠航の猫咪
- 梦石
- 3
- 星屑
- 23186
- 在线时间
- 2387 小时
- 注册时间
- 2005-10-15
- 帖子
- 1166
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 Sion 于 2013-12-17 16:17 编辑
使用说明:复制本脚本全部内容,插入Main之前,或者直接全文替换掉Sprite_Timer的内容
将附件1下载后存为"Timer.png"放在pictures文件夹下
美化显示效果有两种:
效果1:码表式(带1个小数位)第14行赋值为true
效果2:电子表式(不带小数位,冒号会跳动)第14行赋值为false
不管哪一种方式,整数秒的时间退位时,都有滑动效果
你也可以把第14行改为赋值为某开关,以便实现动态控制计时器的显示效果
- #==============================================================================
- # ■ 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
复制代码 附件1:
效果示意图:
|
评分
-
查看全部评分
|