Project1
标题:
仿XXX按钮风格选项框
[打印本页]
作者:
六祈
时间:
2010-10-13 21:16
标题:
仿XXX按钮风格选项框
1.JPG
(32.37 KB, 下载次数: 31)
下载附件
保存到相册
2010-10-13 21:09 上传
【求配色啊求配色】
2.JPG
(31.38 KB, 下载次数: 27)
下载附件
保存到相册
2010-10-13 21:09 上传
【事件设置方法,以54号变量记录选择项,中间的等待4帧必须有,否则有bug】
范例:
54窗口运动.rar
(239.65 KB, 下载次数: 906)
2010-10-13 21:11 上传
点击文件名下载附件
【继续唠叨】模仿css利用偏移和四边阴影变化来模拟按钮的做法,在RM中也可以实现类似的,以window为容器,改变ox和oy,偏移2px,并改变window边阴影的效果做到了。【不过愚者的配色功底要多丑有多丑啊……】
希望可以将一些其它【如css】中的优秀做法吸收到RM中,应该可以产生效果不错的UI
作者:
六祈
时间:
2010-10-13 21:17
module Choice_Configuration
ColorLeft = Color.new(255,0,0,125)
ColorRight = Color.new(0,0,255,125)
WindowHeight = 58
WindowWidth = 306
WindowSpacing = 16
ColorShadow = Color.new(0,0,0,200)
VariableId = 54
end
class Scene_Choice < Scene_Base
include Choice_Configuration
def initialize(*list)
@list = list
end
def start
@spriteset = Spriteset_Map.new
@choice_windows = []
@choice_number = @list.size
start_y = (416 - @choice_number * WindowHeight - (@choice_number - 1) * WindowSpacing) / 2
start_x = (544 - WindowWidth) / 2
@list.each_with_index do |choice,index|
window = Window_Base.new(start_x,start_y + index * (WindowHeight + WindowSpacing),WindowWidth,WindowHeight)
window.contents.dispose
window.contents = Bitmap.new(WindowWidth - 34,WindowHeight - 34)
window.contents.gradient_fill_rect(2,2,WindowWidth - 32 - 2,22,ColorLeft,ColorRight)
window.contents.draw_text(0,0,WindowWidth - 32,24,choice,1)
window.opacity = 0
@choice_windows.push(window)
end
for i in 0...@choice_number
set_unactive(i)
end
@index = 0
set_active(@index)
end
def terminate
@spriteset.dispose
@choice_windows.each{|window| window.dispose}
end
def set_unactive(index)
target = @choice_windows[index]
target.contents.clear_rect(0,0,WindowWidth - 32 - 2,2)
target.contents.clear_rect(0,0,2,22)
target.contents.fill_rect(2,22,WindowWidth - 32 - 2,2,ColorShadow)
target.contents.fill_rect(WindowWidth - 32 - 2,2,2,22,ColorShadow)
target.ox = -2
target.oy = -2
end
def set_active(index)
target = @choice_windows[index]
target.contents.clear_rect(2,22,WindowWidth - 32 - 2,2)
target.contents.clear_rect(WindowWidth - 32 - 2,2,2,22)
target.contents.fill_rect(0,0,WindowWidth - 32 - 2,2,ColorShadow)
target.contents.fill_rect(0,0,2,22,ColorShadow)
target.ox = 0
target.oy = 0
end
def update
@choice_windows.each{|window| window.update}
if Input.trigger?(Input::DOWN)
Sound.play_cursor
set_unactive(@index)
@index += 1
@index %= @choice_number
set_active(@index)
end
if Input.trigger?(Input::UP)
Sound.play_cursor
set_unactive(@index)
@index -= 1
@index %= @choice_number
set_active(@index)
end
if Input.trigger?(Input::C)
Sound.play_decision
$game_variables[VariableId] = @index + 1
$scene = Scene_Map.new
end
end
end
复制代码
作者:
九夜神尊
时间:
2010-10-13 21:33
67估计是没人给你布置作业了。真囧呀!!
:o 9给你个建议!!用一个开关控制该功能与原功能的切换,那么则使用方便很多。
但是,如果选项超过4个呢?
这样:(不知道冲突大不大)打开开关以后,用批量输入模式直接可以输入无限
个选项。每行一项(就像本论坛的投票那样。)
然后再用你发明的那个标签方式分歧每一个选项!!!!:lol
乃等尽请BS我吧!!!!
作者:
夕阳武士
时间:
2010-10-13 21:59
看到这个我就激动,再次谢啦:P
作者:
一箭烂YiJL
时间:
2010-12-4 14:13
中间一定要隔4帧,无奈。。挺麻烦的
能直接在脚本里加进等待四帧或者在:
$game_variables[VariableId] = @index + 1
$scene = Scene_Map.new
之间加入四帧以作缓冲?
作者:
绯红枫
时间:
2011-8-10 17:36
提示:
作者被禁止或删除 内容自动屏蔽
作者:
qq175908660
时间:
2011-8-28 09:21
提示:
作者被禁止或删除 内容自动屏蔽
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1