| 赞 | 2 |
| VIP | |
| 好人卡 | |
| 积分 | 1 |
| 经验 | |
| 最后登录 | 2020-7-27 |
| 在线时间 | 1379 小时 |
- 梦石
- 0
- 星屑
- 76
- 在线时间
- 1379 小时
- 注册时间
- 2012-7-5
- 回帖
- 1643

|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有账号?注册会员
×
本帖最后由 kuerlulu 于 2015-1-1 11:43 编辑
【虽然不知道有啥用= =|||
也完全不知道萌点在哪- -b..
总之就这样啦, 新年快乐喵~
打开姿势嚯呀喵
[pre lang="ruby" line="1"]def pick_a_bitmap(bitmap, x, y, w, h)
b = Bitmap.new w, h
b.blt 0, 0, bitmap, Rect.new(x, y, w, h)
return b
end
def Color.sample(alpha=255)
Color.new([0,120,255][rand(3)],[0,120,255][rand(3)],[0,120,255][rand(3)],alpha)
end
class Monitor
b = Bitmap.new "Resources/title_line.png"
H = [
pick_a_bitmap(b, 0, 0, 210, 34),
pick_a_bitmap(b, 0, 34, 210, 22),
pick_a_bitmap(b, 0, 56, 210, 12),
]
b.dispose
FONT_SIZE = 16
attr_accessor :x, :y
def initialize
@x = @y = 0
prepare_data
prepare_back
end
def prepare_data
@array = []
@linfo = []
@lines = []
@temp_num = @linfo.size
end
def prepare_back
@back_up = Sprite.new
@back_middle = Sprite.new
@back_down = Sprite.new
@back_up.bitmap = H[0]
@back_up.bitmap.font.size = FONT_SIZE
@back_up.bitmap.font.color = Color.new 255, 255, 255, 200
@back_up.bitmap.draw_text @back_up.bitmap.rect, "Monitor by hyrious", 1
@back_middle.bitmap = Bitmap.new H[1].width, 480
@back_middle.bitmap.stretch_blt @back_middle.bitmap.rect, H[1], H[1].rect
@back_middle.src_rect.height = 0
@back_down.bitmap = H[2]
@back_up.z = @back_middle.z = @back_down.z = 233333
end
def update
update_info
update_back
update_lines
end
def update_back
@back_middle.src_rect.height += dynamic_distance(
@array.size * (FONT_SIZE + 2), @back_middle.src_rect.height, 7)
@back_down.x = @back_middle.x = @back_up.x += dynamic_distance(@x, @back_up.x, 7)
@back_up.y += dynamic_distance(@y, @back_up.y, 7)
@back_middle.y = @back_up.y + @back_up.bitmap.height
@back_down.y = @back_middle.y + @back_middle.src_rect.height
end
def dynamic_distance(a, b, c)
(a - b).abs < c ? (a - b) == 0 ? 0 : (a - b).abs / (a - b) : (a - b) / c
end
def update_info
@info = @array.map{|obj, *a| obj.send(*a) }
@info.each_with_index do |e, i|
if e != @linfo
@lines.bitmap.clear
@lines.bitmap.draw_text 8, 0, 192, (FONT_SIZE + 2), conv(*@array)
@lines.bitmap.draw_text 8, 0, 192, (FONT_SIZE + 2), "#{e}", 2
@linfo = e
end
end
end
def update_lines
@lines.each_with_index do |e, i|
e.x += dynamic_distance(@x, e.x, 7)
e.y += dynamic_distance(@y + (i + 1) * (FONT_SIZE + 2) + 16, e.y, 7)
end
end
def conv(obj, sym, *args)
if obj.is_a? Game_Variables
return "变量[#{args}]"
elsif obj.is_a? Game_Switches
return "开关[#{args}]"
else
return obj.class.to_s + '>' + sym.to_s
end
end
def add(obj, sym=:inspect, *args)
@array << [obj, sym, *args]
@lines << new_line
end
def new_line
s = Sprite.new
s.x = 40
s.y = @y + @array.size * (FONT_SIZE + 2) + 16
s.z = 2333333
s.blend_type = 1
s.bitmap = Bitmap.new 210, (FONT_SIZE + 2)
s.bitmap.font.size = FONT_SIZE
s.color = Color.sample 200
return s
end
def clear
@array.clear
@lines.each{|e| e.bitmap.dispose; e.dispose }
@lines.clear
end
end
class << Graphics
alias hy_update update
def update
hy_update
monitor.update
end
def monitor
@monitor ||= Monitor.new
end
end
def monitor; Graphics.monitor; end
[/pre]
食用本代码时请将下图(title_line.png#名字瞎取的啦)保存到Resources文件夹(自己建)
像这样
此UI素材取自Rainmeter默认皮肤"illustro"里的Background.png
@三途亚梦
稍微优化一下UI(代码已更新), 顺便我想到第四弹卖萌就是EasyUI好了~
还有一件事, 事件中这样玩:
|
评分
-
查看全部评分
|