Project1
标题:
【xp】名称输入处理 想缩小窗口到 屏幕下半方,能做到吗?
[打印本页]
作者:
惊天动地
时间:
2011-12-10 20:20
标题:
【xp】名称输入处理 想缩小窗口到 屏幕下半方,能做到吗?
各位高手:
xp 事件里面 名称输入处理 显示的是满屏,我想缩小显示到 屏幕的下半部,大概缩小一半吧,怎么弄呢?
谢谢了
作者:
iisnow
时间:
2011-12-11 01:16
这些都是简单的窗口操作:
算了,教学一下吧:
F11,打开脚本,左边找到Window_NameEdit和Window_NameInput两个代码,
写点开NameEdit,看到19行,
super(X,Y,W,H)(具体的数字我不记得了)
窗口有个原点即它的左上角:它在屏幕中的坐标即是(X,Y)(Y轴以向下为正,X以向右为正)
W,H指的是窗口的宽度与高度
把它改成
super(0, 120, 640, 120)
复制代码
运行试试
再看Window_NameInput的51行,类似的改为
super(0, 240, 640, 240)
复制代码
至于Window_NameInput上面的一堆假名,你也可以改为汉字~~
这时运行就看到了窗口的变化
(在没有窗口的地方显示为黑色,倘若需要以当前地图为背景(好像你就是这个意思吧),就又有点麻烦了,晚了就不想那个了)
这时发现Window_NameInput内容放不下了,于是把它们字体改小,同时注意布局的变化就够了:
(具体的过程不表述了)
最后的脚本为:(数值最后又进行了调整,最后试了试背景不变换的功能……)
class Window_NameEdit
def initialize(actor, max_char)
super(0, 165, 640, 75)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
@name = actor.name
@max_char = max_char
# 控制名字在最大字数以内
name_array = @name.split(//)[0...@max_char]
@name = ""
for i in 0...name_array.size
@name += name_array[i]
end
@default_name = @name
@index = name_array.size
refresh
update_cursor_rect
end
def refresh
self.contents.clear
# 描绘名称
name_array = @name.split(//)
for i in 0...@max_char
c = name_array[i]
if c == nil
c = "_"
end
x = 320 - @max_char * 14 + i * 28
self.contents.draw_text(x, 5, 28, 32, c, 1)
end
# 描绘图形
draw_actor_graphic(@actor, 320 - @max_char * 14 - 40, 45)
end
def update_cursor_rect
x = 320 - @max_char * 14 + @index * 28
self.cursor_rect.set(x, 5, 28, 32)
end
end
class Window_NameInput
def initialize
super(0, 240, 640, 240)
self.contents = Bitmap.new(width - 32, height - 32)
@index = 0
refresh
update_cursor_rect
end
def refresh
self.contents.font.size = 15
self.contents.clear
for i in 0..179
x = 4 + i / 5 / 9 * 152 + i % 5 * 28
y = i / 5 % 9 * 20
self.contents.draw_text(x, y, 28, 20, CHARACTER_TABLE[i], 1)
end
self.contents.draw_text(544, 9 * 20, 64, 20, "确定", 1)
end
def update_cursor_rect
# 光标位置在 [确定] 的情况下
if @index >= 180
self.cursor_rect.set(544, 9 * 20, 64, 20)
# 光标位置在 [确定] 以外的情况下
else
x = 4 + @index / 5 / 9 * 152 + @index % 5 * 28
y = @index / 5 % 9 * 20
self.cursor_rect.set(x, y, 28, 20)
end
end
end
#RGSS没有RGSS2好的一个地方就是没有足够的常量定义,以至于经常要重写方法,烦啊
#吐了个槽
复制代码
效果:
捕获5.PNG
(372.35 KB, 下载次数: 10)
下载附件
保存到相册
2011-12-11 01:15 上传
(图中以地图为背景的功能只是当时的想法,纯粹用我的脚本,上方就是黑的,至于我的地图显示的功能有一个BUG,不过现在太晚就不调试了,所以就算了吧,另外半透明效果也不在上面的脚本里)
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1