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

Project1

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

[已经解决] 光标移动函数 cursor_down

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
210 小时
注册时间
2012-7-19
帖子
259
跳转到指定楼层
1
发表于 2012-9-3 13:51:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
  
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


求解释

Lv1.梦旅人

梦石
0
星屑
55
在线时间
177 小时
注册时间
2011-6-7
帖子
88
2
发表于 2012-9-3 14:03:06 | 只看该作者
其实就是光标循环 最后一个按钮再往下按会跳回第一个

点评

其实我是想问...为什么在非末尾的时候按着"下"它可以自动一直往下移动...而在末尾的时候必须再按一次..?  发表于 2012-9-3 14:09
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

3
发表于 2012-9-3 15:37:25 | 只看该作者
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 为真并移动光标

点评

index 是当前值.按一下 (-1+1)%2=0 按第2下就是 (0+1)%2=1.按第3下(1+1)%2=0  发表于 2012-9-3 20:00
def select(index) @index=index end 那么这样@index 永远为0不是吗?  发表于 2012-9-3 19:24
就是select((index+col_max)%item_max) 里面。。。 假如item_max(项)为2然后col_max恒为一(单列) index初始值-1 那么无论这个函数怎么弄也都是(-1 + 1)%2==0..  发表于 2012-9-3 19:22











你知道得太多了

回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
210 小时
注册时间
2012-7-19
帖子
259
4
 楼主| 发表于 2012-9-3 17:52:40 手机端发表。 | 只看该作者
本帖最后由 ORANGI 于 2012-9-3 17:56 编辑
后知后觉 发表于 2012-9-3 15:37index < item_max - col_max 是在判
断光标当前是否处在末尾行.不是在末尾行才会移动.但是后面又跟了个 || ...
原来如此……太感谢了

然后 ……光标移动的那个……
index……………%………的那个……是怎么回事?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6855
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

5
发表于 2012-9-3 19:17:59 | 只看该作者
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(数值) 是移动光标的函数.

点评

原来如此。。谢谢了。。  发表于 2012-9-3 20:15
一般都有 select(0).特殊点的窗口有类似 select_last 这样的东西  发表于 2012-9-3 20:05
原来index的范围是0开始。。。 那么 之前的,index 初始赋值是 -1,那么程序是在哪里给它重新赋值的?因为如果是-1的话根本没办法弄  发表于 2012-9-3 19:55

评分

参与人数 1梦石 +2 收起 理由
迷糊的安安 + 2 认可答案 附赠66RPG提供的精美好人卡一张^^.

查看全部评分












你知道得太多了

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-17 00:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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