设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
12
返回列表 发新帖
楼主: 沉影不器
打印 上一主题 下一主题

添加slider控件的rm窗体

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

11
 楼主| 发表于 2008-4-22 20:37:00 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

12
发表于 2008-4-22 21:05:09 | 只看该作者
我是比较喜欢Window类的
原因是像text_color这些方法不用重写,可以直接调用{/cy}
话说Sprite比较不耗内存吧
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

13
 楼主| 发表于 2008-4-23 03:52:33 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

14
发表于 2008-4-23 08:49:15 | 只看该作者
sprite 的slider已经写好了
比想像中的还简单{/dy}
沉影不器允许的话我就贴出来
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

15
 楼主| 发表于 2008-4-24 22:28:16 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

16
发表于 2008-4-25 03:43:38 | 只看该作者
  1. class Slider_Base < Sprite_Base
  2.   #--------------------------------------------------------------------------
  3.   # ● 定义实例变量
  4.   #--------------------------------------------------------------------------
  5.   attr_reader   :name                     # 名称
  6.   attr_reader   :max                      # 最大值
  7.   attr_reader   :change                   # 改变量
  8.   attr_reader   :value                    # 当前值
  9.   attr_accessor :vertical                    # 当前值
  10.   attr_reader   :contents
  11.   WLH = 24
  12.   def initialize(name, x, y, w, h = 10, max = 100, change = 1, value = 0, style = 0)
  13.     viewport = Viewport.new(0, 0, 544, 416)
  14.     super(viewport)
  15.     self.bitmap = Bitmap.new(544, 416)
  16.     self.bitmap.font.color = normal_color
  17.     @contents = @bitmap
  18.     setup(name, x, y, w, h, max, change, value, style)
  19.   end
  20.   #--------------------------------------------------------------------------
  21.   # ● 设置 保存参数
  22.   #     name   : 名称
  23.   #     x      : X 坐标
  24.   #     y      : Y 坐标
  25.   #     w      : 宽
  26.   #     h      : 高
  27.   #     max    : 最大值
  28.   #     change : 改变量
  29.   #     value  : 当前值
  30.   #     style  : 样式
  31.   #--------------------------------------------------------------------------
  32.   def setup(name, x, y, w, h, max, change, value, style)
  33.     @name   = name
  34.     @x      = x
  35.     @y      = y
  36.     @w      = w
  37.     @h      = h
  38.     @max    = max
  39.     @value  = value
  40.     @style  = style
  41.     @change = change > 0 ? change : 1
  42.     @scale  = true
  43.     @scale_size = 12
  44.     @color1 = Color.new(255, 255, 255, 255)
  45.     @color2 = Color.new(192, 64, 64, 255)
  46.     @name_color = normal_color
  47.     @value_color = normal_color
  48.     draw_slider(value)
  49.   end
  50.   def update
  51.   end
  52.   #--------------------------------------------------------------------------
  53.   # ● slider颜色
  54.   #     color  : 颜色
  55.   #--------------------------------------------------------------------------
  56.   def color(type, color)
  57.     case type
  58.     when "bar", 1
  59.       @color1 =  color
  60.     when "slide", 2
  61.       @color2 = color
  62.     when "name", 3
  63.       @name_color = color
  64.     when "value", 4
  65.       @value_color = color
  66.     end
  67.     draw_slider(@value)
  68.   end
  69.   def color1=(color)
  70.     @color1 =  color
  71.     draw_slider(@value)
  72.   end
  73.   def color2=(color)
  74.     @color2 = color
  75.     draw_slider(@value)
  76.   end
  77.   def name_color=(color)
  78.     @name_color = color
  79.     draw_slider(@value)
  80.   end
  81.   def value_color=(color)
  82.     @value_color = color
  83.     draw_slider(@value)
  84.   end
  85.   #--------------------------------------------------------------------------
  86.   # ● 更改当前值
  87.   #     value  : 当前值
  88.   #--------------------------------------------------------------------------
  89.   def value=(value)
  90.     @value = value
  91.     draw_slider(value)
  92.   end
  93.   def scale=(yes=true)
  94.     @scale=yes
  95.   end
  96.   def scale?
  97.     return @scale
  98.   end
  99.   def scale_size=(size)
  100.     @scale_size = size
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● 绘制名称和当前值
  104.   #     value  : 当前值
  105.   #--------------------------------------------------------------------------
  106.   def draw_name(x, y)
  107.     # 描绘名称
  108.     self.bitmap.font.color = @name_color
  109.     self.bitmap.draw_text(x, y, @w, 24, @name)
  110.   end
  111.   def draw_value(x, y, value=@value)
  112.     # 描绘当前值
  113.     self.bitmap.font.color = @value_color
  114.     self.bitmap.draw_text(x, y, 64, 24, value.to_s, 2)
  115.   end
  116.   def vertical=(v)
  117.     @vertical = v
  118.   end
  119. end
  120. class Slider_H < Slider_Base
  121.   def initialize(name, x, y, w, h = 10, max = 100, change = 1, value = 0, style = 0)
  122.     super(name, x, y, w, h, max, change, value, style)
  123.     @vertical = false
  124.   end
  125.   #--------------------------------------------------------------------------
  126.   # ● 描绘 slider
  127.   #     value  : 当前值
  128.   #--------------------------------------------------------------------------
  129.   def draw_slider(value)
  130.     case @style
  131.     when 0
  132.       style_0(value)
  133.     when 1
  134.       style_1(value)
  135.     end
  136.     draw_scale(@scale_size) if scale?
  137.   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 样式0
  140.   #     value  : 当前值
  141.   #--------------------------------------------------------------------------
  142.   def style_0(value)
  143.     slide_x = (@w - @h/2) * value / @max
  144.     # 清理
  145.     self.bitmap.clear
  146.     # 绘制名称和当前值
  147.     self.bitmap.font.size = 20
  148.     draw_name(@x, @y)
  149.     draw_value(@x+@w-64, @y, value)
  150.     # 填充
  151.     self.bitmap.fill_rect(@x, @y+23+@h/2, @w, 2, @color1)
  152.     self.bitmap.fill_rect(@x+slide_x, @y+24, @h/2, @h, @color2)
  153.   end
  154.   #--------------------------------------------------------------------------
  155.   # ● 样式1
  156.   #     value  : 当前值
  157.   #--------------------------------------------------------------------------
  158.   def style_1(value)
  159.     width   = @w * value / @max
  160.     # 清理
  161.     self.bitmap.clear
  162.     self.bitmap.font.size = 20
  163.     # 绘制名称和当前值
  164.     draw_name(@x, @y)
  165.     draw_value(@x+@w-64, @y, value)
  166.     # 填充
  167.     self.bitmap.fill_rect(@x-1, @y+23, @w+2, @h+2, @color1)
  168.     self.bitmap.fill_rect(@x, @y+24, width, @h, @color2)
  169.   end
  170.   #--------------------------------------------------------------------------
  171.   # ● 绘制刻度
  172.   #     value  : 当前值
  173.   #--------------------------------------------------------------------------
  174.   def draw_scale(size=12)
  175.     self.bitmap.font.color= normal_color
  176.     self.bitmap.font.size = size
  177.    
  178.     s1 = (bitmap.text_size(0).width)/2
  179.     s2 = (bitmap.text_size(@max.to_s).width)/2
  180.    
  181.     self.bitmap.draw_text(@x-s1, @y+@h+32, @w, size, 0)
  182.     self.bitmap.draw_text(@x, @y+@h+32, @w, size, @max/2, 1)
  183.     self.bitmap.draw_text(@x, @y+@h+32, @w+s2, size, @max, 2)
  184.   end
  185.   #--------------------------------------------------------------------------
  186.   # ● 输入刷新
  187.   #--------------------------------------------------------------------------
  188.   def update
  189.     super
  190.     if Input.repeat?(Input::RIGHT)
  191.       if @value < @max - @change
  192.         @value += @change
  193.       else
  194.         @value = @max
  195.       end
  196.       draw_slider(@value)
  197.     end
  198.     if Input.repeat?(Input::LEFT)
  199.       if @value > @change
  200.         @value -= @change
  201.       else
  202.         @value = 0
  203.       end
  204.       draw_slider(@value)
  205.     end
  206.   end
  207. end

  208. class Slider_V < Slider_Base
  209.   def initialize(name, x, y, w, h = 10, max = 100, change = 1, value = 0, style = 1)
  210.     super(name, x, y, w, h, max, change, value, style)
  211.     @vertical = true
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ● 描绘 slider
  215.   #     value  : 当前值
  216.   #--------------------------------------------------------------------------
  217.   def draw_slider(value)
  218.     case @style
  219.     when 0
  220.       style_0(value)
  221.     when 1
  222.       style_1(value)
  223.     end
  224.     draw_scale(@scale_size) if scale?
  225.   end
  226.   #--------------------------------------------------------------------------
  227.   # ● 样式0
  228.   #     value  : 当前值
  229.   #--------------------------------------------------------------------------
  230.   def style_0(value)
  231.     slide_y = (@w - @h/2) * value / @max
  232.     # 清理
  233.     self.bitmap.clear
  234.     # 绘制名称和当前值
  235.     draw_name_v(@x+24, @y, @vertical)
  236.     draw_value(@x-24, @y+@w-WLH, value)    # 填充
  237.     # 填充
  238.     self.bitmap.fill_rect(@x+47+@h/2, @y, 2, @w, @color1)
  239.     self.bitmap.fill_rect(@x+49, @y+slide_y, @h, @h/2, @color2)
  240.   end
  241.   #--------------------------------------------------------------------------
  242.   # ● 样式1
  243.   #     value  : 当前值
  244.   #--------------------------------------------------------------------------
  245.   def style_1(value)
  246.     width   = @w * (@max-value) / @max
  247.     # 清理
  248.     self.bitmap.clear
  249.     # 绘制名称和当前值
  250.     draw_name(@x+24, @y, @vertical)
  251.     draw_value(@x-24, @y+@w-WLH, value)#(@x+@w-64, @y, value)    # 填充
  252.     self.bitmap.fill_rect(@x+47, @y-1, @h+2, @w+2, @color2)
  253.     self.bitmap.fill_rect(@x+48, @y, @h, width, @color1)
  254.   end
  255.   def draw_name(x, y, v=true)
  256.     v ? draw_name_v(x, y) : super(x, y)
  257.   end
  258.   def draw_name_v(x, y)
  259.     # 描绘名称
  260.     self.bitmap.font.color = @name_color
  261.     self.bitmap.font.size = 20
  262.     t = @name.clone
  263.     cy = y - WLH
  264.     while ((c = t.slice!(/./m)) != nil)
  265.       cy += 3 + WLH - WLH/3
  266.       self.bitmap.draw_text(x, cy, @w, 24, c)
  267.     end
  268.   end
  269.   def draw_scale(size=12)
  270.     self.bitmap.font.color= normal_color
  271.     self.bitmap.font.size = size
  272.    
  273.     s1 = (bitmap.text_size(0).width)/2
  274.     s2 = (bitmap.text_size(@max.to_s).width)/2
  275.    
  276.     self.bitmap.draw_text(@x+50+@h, @y+@w-size/2, @w, size, 0)
  277.     self.bitmap.draw_text(@x+50+@h, @y+(@w-size)/2, @w, size, @max/2)
  278.     self.bitmap.draw_text(@x+50+@h, @y-size/2, @w+s2, size, @max)
  279.   end
  280.   #--------------------------------------------------------------------------
  281.   # ● 输入刷新
  282.   #--------------------------------------------------------------------------
  283.   def update
  284.     super
  285.     if Input.repeat?(Input::UP)
  286.       if @value < @max - @change
  287.         @value += @change
  288.       else
  289.         @value = @max
  290.       end
  291.       draw_slider(@value)
  292.     end
  293.     if Input.repeat?(Input::DOWN)
  294.       if @value > @change
  295.         @value -= @change
  296.       else
  297.         @value = 0
  298.       end
  299.       draw_slider(@value)
  300.     end
  301.   end
  302. end
  303. class Sprite_Base < Sprite
  304.   #--------------------------------------------------------------------------
  305.   # ● 獲取文字顏色
  306.   #     n : 文字顏色色號(0-31)
  307.   #--------------------------------------------------------------------------
  308.   def text_color(n)
  309.     windowskin = Cache.system("Window")
  310.     x = 64 + (n % 8) * 8
  311.     y = 96 + (n / 8) * 8
  312.     return windowskin.get_pixel(x, y)
  313.   end
  314.   #--------------------------------------------------------------------------
  315.   # ● 獲取一般文字顏色
  316.   #--------------------------------------------------------------------------
  317.   def normal_color
  318.     return text_color(0)
  319.   end
  320.   #--------------------------------------------------------------------------
  321.   # ● 獲取系統文字顏色
  322.   #--------------------------------------------------------------------------
  323.   def system_color
  324.     return text_color(16)
  325.   end
  326.   #--------------------------------------------------------------------------
  327.   # ● 獲取危機文字顏色
  328.   #--------------------------------------------------------------------------
  329.   def crisis_color
  330.     return text_color(17)
  331.   end
  332.   #--------------------------------------------------------------------------
  333.   # ● 獲取戰鬥不能文字顏色
  334.   #--------------------------------------------------------------------------
  335.   def knockout_color
  336.     return text_color(18)
  337.   end
  338.   #--------------------------------------------------------------------------
  339.   # ● 獲取裝備畫面能力值上升顏色
  340.   #--------------------------------------------------------------------------
  341.   def power_up_color
  342.     return text_color(24)
  343.   end
  344.   #--------------------------------------------------------------------------
  345.   # ● 獲取裝備畫面能力值下降顏色
  346.   #--------------------------------------------------------------------------
  347.   def power_down_color
  348.     return text_color(25)
  349.   end
  350. end
复制代码
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
46
在线时间
10 小时
注册时间
2007-5-27
帖子
2558

第1届Title华丽大赛新人奖

17
 楼主| 发表于 2008-4-26 23:17:44 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

天仙

梦石
0
星屑
620
在线时间
184 小时
注册时间
2008-4-15
帖子
5023

贵宾

18
发表于 2008-5-17 08:34:15 | 只看该作者
发布完毕
http://rpg.blue/web/htm/news1051.htm

VIP+3
VA脚本开工中...
偷窃脚本1.0 - 已完成
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2008-8-3
帖子
26
19
发表于 2008-8-11 00:02:43 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

风之塞尔达

梦石
0
星屑
50
在线时间
57 小时
注册时间
2005-10-22
帖子
2492

贵宾

20
发表于 2008-8-18 07:07:11 | 只看该作者
呵呵 窗体控件... 谁有兴趣写一套RM的通用基本GUI?
在程序里延续塞尔达的传说, 在画板上勾勒塞尔达的轮廓!!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-16 15:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表