RMXP脚本解析(七):Window_Command

目录

Window_Command类代码解析

关于Window_Command类的实例


绕了半天,终于又回到了我们的Window_Command类。

Window_Command类代码解析

#==============================================================================

# ■ Window_Command

#------------------------------------------------------------------------------

#  一般的命令选择行窗口。

#==============================================================================

class Window_Command < Window_Selectable

    #--------------------------------------------------------------------------

    # ● 初始化对像

    #     width    : 窗口的宽

    #     commands : 命令字符串序列

    #--------------------------------------------------------------------------

    def initialize(width, commands)

      # 由命令的个数计算出窗口的高

      super(0, 0, width, commands.size * 32 + 32)

      @item_max = commands.size #当然,命令=物品(是个冷笑话) Window_Selectable.@item_max

      @commands = commands #命令

      self.contents = Bitmap.new(width - 32, @item_max * 32) #命令总数*行高32作为其高度 宽度-32猜测是预留空间(给光标)

      refresh #刷新

      self.index = 0 #初始光标指向第一个命令

    end

    #--------------------------------------------------------------------------

    # ● 刷新

    #--------------------------------------------------------------------------

    def refresh

      self.contents.clear #清除位图

      for i in 0...@item_max #遍历所有命令

        draw_item(i, normal_color) #绘制命令

      end

    end

    #--------------------------------------------------------------------------

    # ● 描绘项目

    #     index : 项目编号

    #     color : 文字色

    #--------------------------------------------------------------------------

    def draw_item(index, color) 

      self.contents.font.color = color

      rect = Rect.new(4, 32 * index, self.contents.width - 8, 32) #4应为边距

      self.contents.fill_rect(rect, Color.new(0, 0, 0, 0)) #填充矩形 #但是它用的是一个透明度为0的颜色,所以不会显示出颜色来

      #为什么要执行这一步呢

      self.contents.draw_text(rect, @commands[index]) #绘制文字

    end

    #--------------------------------------------------------------------------

    # ● 项目无效化

    #     index : 项目编号

    #--------------------------------------------------------------------------

    def disable_item(index)

      draw_item(index, disabled_color) #如果是无效命令就以无效颜色绘制

    end

  end

关于Window_Command类的实例

我截几个图,红圈部分就是这个类的实例窗口:

其中图一就是Scene_Title里实例化的命令窗口,也就是标题界面的命令窗口。此时回看Scene_Title内关于标题窗口的代码:

s1 = "新游戏"

s2 = "继续"

s3 = "退出"

@command_window = Window_Command.new(192, [s1, s2, s3])

@command_window.back_opacity = 160

@command_window.x = 320 - @command_window.width / 2

@command_window.y = 288

声明了一个命令窗口并传入一个描述命令的数组,然后重设其透明度和坐标,使其出现在窗口的中间下方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值