赞 | 5 |
VIP | 71 |
好人卡 | 22 |
积分 | 6 |
经验 | 32145 |
最后登录 | 2013-8-9 |
在线时间 | 184 小时 |
Lv2.观梦者 天仙
- 梦石
- 0
- 星屑
- 620
- 在线时间
- 184 小时
- 注册时间
- 2008-4-15
- 帖子
- 5023
|
提两个建议
把slider的窗口直接设为
XY座标(0,0)宽高(544,416)透明度0
在initialize里面取得参数直接并调用setup
还有Window_Slider直接命名为Slider
这样生成slider时只要一句
@slider = Slider.new(各项参数)
再来就是可以在多加两个颜色的参数
这样就可以一个style多个用处了
这是我改过的,LZ看看吧
- #==============================================================================
- # 添加slider控件的rm窗体 by 沉影不器
- #------------------------------------------------------------------------------
- # 功能描述: ① 一个可使用类似C++的slider控件的窗体
- # ② 通过slider控件的value输出与指定变量绑定
- # ③ 方便脚本用户自定义样式,可在[● 样式1]之后随意添加新样式
- #
- # 输入与输出: ① 允许自定义的项目包括:
- # 名称、坐标、宽高、数据最大值、每次改变量、
- # 初始化时显示的值(value)、样式
- # ② 控件输出包括:
- # 数据最大值、每次改变量、当前变量值(value)
- #------------------------------------------------------------------------------
- class Slider < Window_Base
- #--------------------------------------------------------------------------
- # ● 定义实例变量
- #--------------------------------------------------------------------------
- attr_reader :name # 名称
- attr_reader :max # 最大值
- attr_reader :change # 改变量
- attr_reader :value # 当前值
-
- def initialize(name, x, y, w, h = 10, max = 100, change = 1, value = 0, style = 0)
- super(0, 0, 544, 416)
- self.opacity = 0
- setup(name, x, y, w, h, max, change, value, style)
- end
-
- #--------------------------------------------------------------------------
- # ● 设置 保存参数
- # name : 名称
- # x : X 坐标
- # y : Y 坐标
- # w : 宽
- # h : 高
- # max : 最大值
- # change : 改变量
- # value : 当前值
- # style : 样式
- #--------------------------------------------------------------------------
- def setup(name, x, y, w, h, max, change, value, style)
- @name = name
- @x = x
- @y = y
- @w = w
- @h = h
- @max = max
- @value = value
- @style = style
- @change = change > 0 ? change : 1
- @color1 = Color.new(255, 255, 255, 255)
- @color2 = Color.new(64, 128, 64, 255)
- draw_slider(value)
- end
- #--------------------------------------------------------------------------
- # ● 描绘 slider
- # value : 当前值
- #--------------------------------------------------------------------------
- def draw_slider(value)
- case @style
- when 0
- style_0(value)
- when 1
- style_1(value)
- end
- end
- #--------------------------------------------------------------------------
- # ● slider颜色
- # color : 颜色
- #--------------------------------------------------------------------------
- def color1=(color)
- @color1 = color
- draw_slider(@value)
- end
- def color2=(color)
- @color2 = color
- draw_slider(@value)
- end
- #--------------------------------------------------------------------------
- # ● 样式0
- # value : 当前值
- #--------------------------------------------------------------------------
- def style_0(value)
- slide_x = (@w - @h/2) * value / @max
- # 清理
- self.contents.clear
- # 描绘名称
- self.contents.draw_text(@x, @y, @w, 24, @name)
- # 描绘当前值
- self.contents.draw_text(@x+@w-64, @y, 64, 24, value.to_s, 2)
- # 填充
- self.contents.fill_rect(@x, @y+23+@h/2, @w, 2, @color1)
- self.contents.fill_rect(@x+slide_x, @y+24, @h/2, @h, @color2)
- end
- #--------------------------------------------------------------------------
- # ● 样式1
- # value : 当前值
- #--------------------------------------------------------------------------
- def style_1(value)
- width = @w * value / @max
- # 清理
- self.contents.clear
- # 描绘名称
- self.contents.draw_text(@x, @y, @w, 24, @name)
- # 描绘当前值
- self.contents.draw_text(@x+@w-64, @y, 64, 24, value.to_s, 2)
- # 填充
- self.contents.fill_rect(@x-1, @y+23, @w+2, @h+2, @color1)
- self.contents.fill_rect(@x, @y+24, width, @h, @color2)
- end
- #--------------------------------------------------------------------------
- # ● 更改当前值
- # value : 当前值
- #--------------------------------------------------------------------------
- def value=(value)
- @value = value
- draw_slider(value)
- end
- #--------------------------------------------------------------------------
- # ● 输入刷新
- #--------------------------------------------------------------------------
- def update
- if Input.repeat?(Input::RIGHT)
- if @value < @max - @change
- @value += @change
- else
- @value = @max
- end
- draw_slider(@value)
- end
- if Input.repeat?(Input::LEFT)
- if @value > @change
- @value -= @change
- else
- @value = 0
- end
- draw_slider(@value)
- end
- end
- end
复制代码
|
|