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

Project1

 找回密码
 注册会员
搜索
查看: 1363|回复: 1
打印 上一主题 下一主题

【xp】名称输入处理 想缩小窗口到 屏幕下半方,能做到吗?

[复制链接]

Lv1.梦旅人

梦石
0
星屑
130
在线时间
137 小时
注册时间
2008-10-7
帖子
236
跳转到指定楼层
1
发表于 2011-12-10 20:20:11 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
各位高手:
   xp 事件里面 名称输入处理   显示的是满屏,我想缩小显示到 屏幕的下半部,大概缩小一半吧,怎么弄呢?

谢谢了

Lv2.观梦者

梦石
0
星屑
508
在线时间
1478 小时
注册时间
2011-9-17
帖子
1316

开拓者贵宾

来自 2楼
发表于 2011-12-11 01:16:37 | 只看该作者
这些都是简单的窗口操作:
算了,教学一下吧:
F11,打开脚本,左边找到Window_NameEdit和Window_NameInput两个代码,
写点开NameEdit,看到19行,
super(X,Y,W,H)(具体的数字我不记得了)
窗口有个原点即它的左上角:它在屏幕中的坐标即是(X,Y)(Y轴以向下为正,X以向右为正)
W,H指的是窗口的宽度与高度
把它改成
  1. super(0, 120, 640, 120)
复制代码

运行试试
再看Window_NameInput的51行,类似的改为
  1. super(0, 240, 640, 240)
复制代码
至于Window_NameInput上面的一堆假名,你也可以改为汉字~~
这时运行就看到了窗口的变化
(在没有窗口的地方显示为黑色,倘若需要以当前地图为背景(好像你就是这个意思吧),就又有点麻烦了,晚了就不想那个了)

这时发现Window_NameInput内容放不下了,于是把它们字体改小,同时注意布局的变化就够了:
(具体的过程不表述了)
最后的脚本为:(数值最后又进行了调整,最后试了试背景不变换的功能……)
  1. class Window_NameEdit
  2.   
  3.   def initialize(actor, max_char)
  4.     super(0, 165, 640, 75)
  5.     self.contents = Bitmap.new(width - 32, height - 32)
  6.     @actor = actor
  7.     @name = actor.name
  8.     @max_char = max_char
  9.     # 控制名字在最大字数以内
  10.     name_array = @name.split(//)[0...@max_char]
  11.     @name = ""
  12.     for i in 0...name_array.size
  13.       @name += name_array[i]
  14.     end
  15.     @default_name = @name
  16.     @index = name_array.size
  17.     refresh
  18.     update_cursor_rect
  19.   end
  20.   
  21.   def refresh
  22.     self.contents.clear
  23.     # 描绘名称
  24.     name_array = @name.split(//)
  25.     for i in 0...@max_char
  26.       c = name_array[i]
  27.       if c == nil
  28.         c = "_"
  29.       end
  30.       x = 320 - @max_char * 14 + i * 28
  31.       self.contents.draw_text(x, 5, 28, 32, c, 1)
  32.     end
  33.     # 描绘图形
  34.     draw_actor_graphic(@actor, 320 - @max_char * 14 - 40, 45)
  35.   end
  36.   
  37.   def update_cursor_rect
  38.     x = 320 - @max_char * 14 + @index * 28
  39.     self.cursor_rect.set(x, 5, 28, 32)
  40.   end
  41.   
  42. end

  43. class Window_NameInput
  44.   
  45.   def initialize
  46.     super(0, 240, 640, 240)
  47.     self.contents = Bitmap.new(width - 32, height - 32)
  48.     @index = 0
  49.     refresh
  50.     update_cursor_rect
  51.   end
  52.   
  53.   def refresh
  54.     self.contents.font.size = 15
  55.     self.contents.clear
  56.     for i in 0..179
  57.       x = 4 + i / 5 / 9 * 152 + i % 5 * 28
  58.       y = i / 5 % 9 * 20
  59.       self.contents.draw_text(x, y, 28, 20, CHARACTER_TABLE[i], 1)
  60.     end
  61.     self.contents.draw_text(544, 9 * 20, 64, 20, "确定", 1)
  62.   end
  63.   
  64.   def update_cursor_rect
  65.     # 光标位置在 [确定] 的情况下
  66.     if @index >= 180
  67.       self.cursor_rect.set(544, 9 * 20, 64, 20)
  68.     # 光标位置在 [确定] 以外的情况下
  69.     else
  70.       x = 4 + @index / 5 / 9 * 152 + @index % 5 * 28
  71.       y = @index / 5 % 9 * 20
  72.       self.cursor_rect.set(x, y, 28, 20)
  73.     end
  74.   end
  75.   
  76. end


  77. #RGSS没有RGSS2好的一个地方就是没有足够的常量定义,以至于经常要重写方法,烦啊
  78. #吐了个槽
复制代码

效果:

(图中以地图为背景的功能只是当时的想法,纯粹用我的脚本,上方就是黑的,至于我的地图显示的功能有一个BUG,不过现在太晚就不调试了,所以就算了吧,另外半透明效果也不在上面的脚本里)

点评

请无视我无聊的教学,实在是因为Window类真的是老朋友了啊~~  发表于 2011-12-11 01:17

评分

参与人数 1星屑 +200 梦石 +4 收起 理由
各种压力的猫君 + 200 + 4 认可答案+精彩回答

查看全部评分

我帖子中要有是不HX的空白,请Ctrl + A
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-23 21:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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