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

Project1

 找回密码
 注册会员
搜索
Project1 查看内容

光标矩形教学:随着文字多少变化 (command窗口)

2006-2-25 00:00| 发布者: 柳柳| 查看: 4122| 评论: 0|原作者: 66RPG

摘要:    作者 柳柳  版本与更新  2006年2月更新  相关网址 点此进入讨论贴   范例工程 脚本功能 command窗口的光标随着文字多少的变化而改宽度 使用方法 复制
 

 作者

柳柳

 版本与更新

 2006年2月更新

 相关网址

点此进入讨论贴 

 范例工程



脚本功能

command窗口的光标随着文字多少的变化而改宽度

使用方法

复制全部脚本内容,在Main脚本之前按insert,插入此脚本全部内容。

说明

既然讲到了这个效果,不如顺便提一下update_cursor_rect

所有继承于Window_Selectable的窗口,都具有def update_cursor_rect的方法,包括这个Window_Command。没有在脚本中定义,那是表明用了默认的Window_Selectable中的定义。

这个update_cursor_rect就是光标的大小和位置的定义。有兴趣的话,在脚本中搜索一下def update_cursor_rect,你可以看到很多窗口中都定义了这个光标矩形的大小。

比如Window_MenuStatus中如下定义:

  #-------------------------------------------------------------------
  # ● 刷新光标矩形
  #-------------------------------------------------------------------
  def update_cursor_rect
    if @index < 0
      self.cursor_rect.empty
    else
      self.cursor_rect.set(0, @index * 116, self.width - 32, 96)
    end
  end

这个就是说,当@index<0,窗口不显示光标矩形,否则光标矩形的显示规则为self.cursor_rect.set(0, @index * 116, self.width - 32, 96)。其实就是self.cursor_rect.set(光标X坐标, 光标Y坐标, 光标宽度, 光标高度)

所以当你自己编写一个可选择的窗口时,如果需要自定义光标矩形的大小和位置,只要参考Window_MenuStatus这里的定义,照猫画虎即可。


 

 脚本内容

class Window_Command
  #--------------------------------------------------------------------------
  # ● 更新光标举行
  #--------------------------------------------------------------------------
  def update_cursor_rect
    # 光标位置不满 0 的情况下
    if @index < 0
      self.cursor_rect.empty
      return
    end
    # 获取当前的行
    row = @index / @column_max
    # 当前行被显示开头行前面的情况下
    if row < self.top_row
      # 从当前行向开头行滚动
      self.top_row = row
    end
    # 当前行被显示末尾行之后的情况下
    if row > self.top_row + (self.page_row_max - 1)
      # 从当前行向末尾滚动
      self.top_row = row - (self.page_row_max - 1)
    end
    # 计算光标的宽
    cursor_width = self.contents.text_size(@commands[@index]).width + 8
    # 计算光标坐标
    x = @index % @column_max * (cursor_width + 32)
    y = @index / @column_max * 32 - self.oy
    # 更新国标矩形
    self.cursor_rect.set(x, y, cursor_width, 32)
  end 
end


 

脚本使用的通用说明

约定:本脚本来源于网络,任何人不得随意将本脚本应用于商业用途,如需转载,必须保留所有版权信息,如果是国内作者,最好征求作者同意——否则发生任何后果,66RPG不予负责。使用此脚本表示您默认接受上述约定。

说明:不同脚本之间、尤其是不同作者脚本之间会有冲突,本站会对已知脚本冲突进行简单说明。测试新脚本请下载本站提供的测试文件或者新建工程测试。脚本不要贪多,否则可能会互相冲突对您的游戏造成未知的影响。如果脚本内或者本站内提供了解释,请务必完全看完解释后再使用,如有问题,请到论坛讨论。


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

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

GMT+8, 2024-3-29 07:54

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

返回顶部