Project1

标题: 光标移动函数 cursor_down [打印本页]

作者: ORANGI    时间: 2012-9-3 13:51
标题: 光标移动函数 cursor_down
  
RUBY 代码复制
  1. #--------------------------------------------------------------------------
  2.   # ● 光标向下移动
  3.   #--------------------------------------------------------------------------
  4.   def cursor_down(wrap = false)
  5.     if index < item_max - col_max || (wrap && col_max == 1)
  6.       select((index + col_max) % item_max)
  7.     end
  8.   end


求解释
作者: chxush    时间: 2012-9-3 14:03
其实就是光标循环 最后一个按钮再往下按会跳回第一个
作者: 后知后觉    时间: 2012-9-3 15:37
index < item_max - col_max 是在判断光标当前是否处在末尾行.不是在末尾行才会移动.
但是后面又跟了个 || (wrap && col_max == 1)
这个是 wrap 为真并且 列数 为 1 的时候成立.
wrap 是什么?
看执行行传递的参数.
    cursor_down (Input.trigger?(:DOWN))  if Input.repeat?(:DOWN)
Input.trigger?(:DOWN)  单击按钮 down
if Input.repeat?(:DOWN) 是在判断是否按下并持续按下了一段时间的 down 键.
当一直按下 down 的时候 repeat? 是成立的 而 trigger? 是不成立的
所以光标移动到最后行就停住了.这时你重新按下 down.就使得 trigger? 为真.
就忽略了末尾行的限制 触发 wrap && col_max == 1 为真并移动光标
作者: ORANGI    时间: 2012-9-3 17:52
本帖最后由 ORANGI 于 2012-9-3 17:56 编辑
后知后觉 发表于 2012-9-3 15:37index < item_max - col_max 是在判
断光标当前是否处在末尾行.不是在末尾行才会移动.但是后面又跟了个 || ...
原来如此……太感谢了

然后 ……光标移动的那个……
index……………%………的那个……是怎么回事?
作者: 后知后觉    时间: 2012-9-3 19:17
ORANGI 发表于 2012-9-3 17:52
原来如此……太感谢了

然后 ……光标移动的那个……

index 是光标当前的位置
col_max 是列数
item_max 是项目数
% 是取余数.
光标位置 index 可移动的范围是 0到 item_max-1.
要理解那一串最好的方法就是带入具体的数值进去计算.
比如 当前光标位置是 5 .列数是 1. 项目数是 6.
(5 + 1) % 6
6除6得1余0.结果就是 0.光标将移动到 0 上去
select(数值) 是移动光标的函数.




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