Project1

标题: 选项窗口,如何判断选中项变化? [打印本页]

作者: 冰舞蝶恋    时间: 2011-3-28 18:36
标题: 选项窗口,如何判断选中项变化?
如题,选中项的变化怎么判断?就是光标移位。。
作者: Rion幻音    时间: 2011-3-28 18:55
本帖最后由 Rion幻音 于 2011-3-28 18:57 编辑

看看默认脚本里的Window_Selectable或者Window_Command就有了吧?
作者: 冰舞蝶恋    时间: 2011-3-28 19:18
回复 Rion幻音 的帖子

有啊,就是@index嘛,可是怎么判断它变化??
作者: Rion幻音    时间: 2011-3-29 13:40
回复 冰舞蝶恋 的帖子

可以找看Window_MenuStatus里的更新光标看一看
作者: DeathKing    时间: 2011-3-30 22:46
本帖最后由 DeathKing 于 2011-3-30 22:50 编辑

将 Window_Selectable 提供的下面方法认为是“事件”(VB6的事件驱动思想)
      ※ cursor_down
      ※ cursor_up
      ※ cursor_right
      ※ cursor_left
      ※ cursor_pagedown
      ※ cursor_pageup
上述的事件都会引起 @index 的变动。如果有特殊需要的话,可对这些方法进行处理,以响应最初目的。

譬如:

  1. class Window_Selectable
  2.   alias new_cursor_down cursor_down
  3.   def cursor_down(wrap = false)
  4.     new_cursor_down(wrap)
  5.     p "DK now is requiring loli~"
  6.   end
  7. end
复制代码
将其用于默认脚本,运行尝试效果,很有趣~

当然,通过 refresh 方法判定 @index 的值不失为一种妙法。

作者: 冰舞蝶恋    时间: 2011-3-31 13:39
回复 DeathKing 的帖子

呃 谢谢前辈
咱找到了四个def!
感谢……!


冰舞蝶恋于2011-3-31 13:41补充以下内容:
  #--------------------------------------------------------------------------
  # ● 光标下移
  #     wrap : 允许循环
  #--------------------------------------------------------------------------
  def cursor_down(wrap = false)
    if (@index < @item_max - @column_max) or (wrap and @column_max == 1)
      @index = (@index + @column_max) % @item_max
    end
  end
  #--------------------------------------------------------------------------
  # ● 光标上移
  #     wrap : 允许循环
  #--------------------------------------------------------------------------
  def cursor_up(wrap = false)
    if (@index >= @column_max) or (wrap and @column_max == 1)
      @index = (@index - @column_max + @item_max) % @item_max
    end
  end
  #--------------------------------------------------------------------------
  # ● 光标右移
  #     wrap : 允许循环
  #--------------------------------------------------------------------------
  def cursor_right(wrap = false)
    if (@column_max >= 2) and
       (@index < @item_max - 1 or (wrap and page_row_max == 1))
      @index = (@index + 1) % @item_max
    end
  end
  #--------------------------------------------------------------------------
  # ● 光标左移
  #     wrap : 允许循环
  #--------------------------------------------------------------------------
  def cursor_left(wrap = false)
    if (@column_max >= 2) and
       (@index > 0 or (wrap and page_row_max == 1))
      @index = (@index - 1 + @item_max) % @item_max
    end
  end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1