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

Project1

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

[已经解决] 怎么让光标循环移动

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
26 小时
注册时间
2012-5-4
帖子
351
跳转到指定楼层
1
发表于 2012-5-29 18:34:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
如光标在第一个物品上
按上跳到最后一个物品那

Lv1.梦旅人

梦石
0
星屑
50
在线时间
48 小时
注册时间
2012-4-17
帖子
55
2
发表于 2012-5-29 20:04:03 | 只看该作者
  1. #==============================================================================
  2. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  3. #==============================================================================
  4. class Window_Selectable
  5.   #--------------------------------------------------------------------------
  6.   # ● 刷新画面
  7.   #--------------------------------------------------------------------------
  8.   def update
  9.     super
  10.     # 可以移动光标的情况下
  11.     if self.active and @item_max > 0 and @index >= 0
  12.       # 方向键下被按下的情况下
  13.       if Input.repeat?(Input::DOWN)
  14.         # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
  15.         # 或光标位置在(项目数-列数)之前的情况下
  16.         if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
  17.            @index < @item_max - @column_max
  18.           # 光标向下移动
  19.           $game_system.se_play($data_system.cursor_se)
  20.           @index = (@index + @column_max) % @item_max
  21.         else
  22.           if @column_max >= 2 and  @index == @item_max - 1
  23.           $game_system.se_play($data_system.cursor_se)
  24.           @index = -1
  25.           end
  26.           # 列数为 2 以上并且、光标位置在(项目数 - 1)之前的情况下
  27.           if @column_max >= 2 and @index < @item_max - 1
  28.            # 光标向右移动
  29.            $game_system.se_play($data_system.cursor_se)
  30.            @index += 1
  31.           end
  32.         end
  33.       end
  34.       # 方向键上被按下的情况下
  35.       if Input.repeat?(Input::UP)
  36.         # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
  37.         # 或光标位置在列之后的情况下
  38.         if (@column_max == 1 and Input.trigger?(Input::UP)) or
  39.            @index >= @column_max
  40.           # 光标向上移动
  41.           $game_system.se_play($data_system.cursor_se)
  42.           @index = (@index - @column_max + @item_max) % @item_max
  43.         else
  44.           if  @column_max >= 2 and @index == 0
  45.           $game_system.se_play($data_system.cursor_se)
  46.           @index = @item_max
  47.           end      
  48.           # 列数为 2 以上并且、光标位置在 0 之后的情况下
  49.           if @column_max >= 2 and @index > 0
  50.           # 光标向左移动
  51.           $game_system.se_play($data_system.cursor_se)
  52.           @index -= 1
  53.           end
  54.         end
  55.       end
  56.       # 方向键右被按下的情况下
  57.       if Input.repeat?(Input::RIGHT)      
  58.         if @column_max >= 2 and @index == @item_max - 1
  59.           $game_system.se_play($data_system.cursor_se)
  60.           @index = -1
  61.         end
  62.          # 列数为 2 以上并且、光标位置在(项目数 - 1)之前的情况下
  63.         if @column_max >= 2 and @index < @item_max - 1
  64.            # 光标向右移动
  65.            $game_system.se_play($data_system.cursor_se)
  66.            @index += 1
  67.         else
  68.           # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
  69.           # 或光标位置在(项目数-列数)之前的情况下
  70.           if (@column_max == 1 and Input.trigger?(Input::RIGHT)) or
  71.            @index < @item_max - @column_max
  72.           # 光标向下移动
  73.           $game_system.se_play($data_system.cursor_se)
  74.           @index = (@index + @column_max) % @item_max
  75.           end
  76.         end  
  77.       end     
  78.       # 方向键左被按下的情况下
  79.       if Input.repeat?(Input::LEFT)
  80.         if  @column_max >= 2 and @index == 0
  81.           $game_system.se_play($data_system.cursor_se)
  82.           @index = @item_max
  83.         end      
  84.        # 列数为 2 以上并且、光标位置在 0 之后的情况下
  85.         if @column_max >= 2 and @index > 0
  86.          # 光标向左移动
  87.           $game_system.se_play($data_system.cursor_se)
  88.           @index -= 1
  89.         else
  90.           # 列数不是 1 并且方向键的下的按下状态不是重复的情况、
  91.           # 或光标位置在列之后的情况下
  92.           if (@column_max == 1 and Input.trigger?(Input::LEFT)) or
  93.            @index >= @column_max
  94.           # 光标向上移动
  95.           $game_system.se_play($data_system.cursor_se)
  96.           @index = (@index - @column_max + @item_max) % @item_max
  97.           end
  98.         end
  99.       end
  100.       # R 键被按下的情况下
  101.       if Input.repeat?(Input::R)
  102.         # 显示的最后行在数据中最后行上方的情况下
  103.         if self.top_row + (self.page_row_max - 1) < (self.row_max - 1)
  104.           # 光标向后移动一页
  105.           $game_system.se_play($data_system.cursor_se)
  106.           @index = [@index + self.page_item_max, @item_max - 1].min
  107.           self.top_row += self.page_row_max
  108.         end
  109.       end
  110.       # L 键被按下的情况下
  111.       if Input.repeat?(Input::L)
  112.         # 显示的开头行在位置 0 之后的情况下
  113.         if self.top_row > 0
  114.           # 光标向前移动一页
  115.           $game_system.se_play($data_system.cursor_se)
  116.           @index = [@index - self.page_item_max, 0].max
  117.           self.top_row -= self.page_row_max
  118.         end
  119.       end
  120.     end
  121.     # 刷新帮助文本 (update_help 定义了继承目标)
  122.     if self.active and @help_window != nil
  123.       update_help
  124.     end
  125.     # 刷新光标矩形
  126.     update_cursor_rect
  127.   end
  128. end

  129. #==============================================================================
  130. # 本脚本来自www.66RPG.com,使用和转载请保留此信息
  131. #==============================================================================
复制代码
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-26 16:52

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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