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

Project1

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

【XP】怎么判断窗口中的光标在上下移动?

[复制链接]

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
跳转到指定楼层
1
发表于 2011-12-13 14:30:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 幻耶 于 2011-12-13 15:26 编辑

需要作个判断,就是 if 左边列表的光标在上下移动,就XXX。这个脚本怎么写?

00.jpg (24.03 KB, 下载次数: 1)

00.jpg

点评

- -我怎么貌似看到了WOW的天赋树?  发表于 2011-12-13 17:34
囡囚囨囚囨図囨囧

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

2
发表于 2011-12-13 14:40:37 | 只看该作者
在Update_cursor中
  1. last_cursor = self.index
复制代码
在光标移动判定结束之后:
  1. if last_cursor != self.cursor
复制代码
这个就是移动了光标的话。


越向上数值越小,越向下数值越大
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
3
 楼主| 发表于 2011-12-13 15:00:57 | 只看该作者
本帖最后由 幻耶 于 2011-12-13 15:11 编辑
feizhaodan 发表于 2011-12-13 14:40
在Update_cursor中在光标移动判定结束之后:这个就是移动了光标的话。


越向上数值越小,越向下数值越 ...


我用了一个技能树脚本,我把 if last_cursor != self.cursor 放在这个脚本的 def update 下会出错,我希望当光标上下移动的同时,对右边的图片作某些处理(比如更改图片位置)
  1. class Window_mp_Command < Window_Selectable
  2.   #--------------------------------------------------------------------------
  3.   # ● 初始化对像
  4.   #     width    : 窗口的宽
  5.   #     commands : 命令字符串序列
  6.   #--------------------------------------------------------------------------
  7.   def initialize(width, commands)
  8.     # 由命令的个数计算出窗口的高
  9.     super(0, 0, width, 480)#commands.size * 32 + 32)
  10.     @item_max = 13
  11.     @commands = commands
  12.      self.contents = Bitmap.new(width - 32, @item_max * 32)
  13.    
  14.     refresh
  15.     self.index = 0
  16.   end
  17.   #--------------------------------------------------------------------------
  18.   # ● 刷新
  19.   #--------------------------------------------------------------------------
  20.   def refresh
  21.     self.contents.clear
  22.     for i in 0...@item_max
  23.       draw_item(i, normal_color)
  24.     end
  25.   end
  26.   #--------------------------------------------------------------------------
  27.   # ● 描绘项目
  28.   #     index : 项目编号
  29.   #     color : 文字色
  30.   #--------------------------------------------------------------------------
  31.   def draw_item(index, color)
  32.     self.contents.font.color = color
  33.     rect = Rect.new(4, 32 * index, self.contents.width - 8, 32)
  34.     self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
  35.     self.contents.draw_text(rect, @commands[index].to_s)
  36.   end
  37.   #--------------------------------------------------------------------------
  38.   # ● 项目无效化
  39.   #     index : 项目编号
  40.   #--------------------------------------------------------------------------
  41.   def disable_item(index)         ####把按钮灰色显示(代表不能按)
  42.     draw_item(index, disabled_color)
  43.   end
  44.   def able_item(index)       ####把按钮正常显示
  45.     draw_item(index, normal_color)
  46.   end
  47. end


  48. class Window_Base < Window
  49.   def draw_skilltree(actor, x, y)############描绘技能树的方法   
  50.     bitmap=Bitmap.new("Graphics/Pictures/skill")#技能树的图
  51. #技能树的图的地址是 Graphics\Pictures下的skill.png 文件 可以自己改
  52.     src_rect = Rect.new(0, 0, bitmap.width, bitmap.height)
  53.     self.contents.blt(x, y, bitmap, src_rect)  
  54.     x = 244   #############技能的点数显示位置的 x值 根据技能树的不同调整
  55.     y = 69
  56.     self.contents.draw_text(x , y, 96, 32, @actor.skill3.to_s )
  57.     self.contents.draw_text(x , y+160, 96, 32, @actor.skill2.to_s )
  58.     self.contents.draw_text(x , y+316, 96, 32, @actor.skill1.to_s )
  59. #####在相应的地方现实技能的点数   
  60.     self.contents.draw_text(0 , 400, 96, 32, "剩余技能点" )
  61.     self.contents.draw_text(100 , 400, 96, 32, @actor.skillp.to_s )
  62. #######现实剩余技能点数
  63.     end
  64.   end
  65.   


  66. #==============================================================================
  67. class Window_skilltree < Window_Base  #技能树窗口
  68.   #--------------------------------------------------------------------------
  69.   # ● 初始化对像
  70.   #     actor : 角色
  71.   #--------------------------------------------------------------------------
  72.   def initialize(actor)
  73.     super(0, 0, 500, 480)
  74.     self.contents = Bitmap.new(width - 32, height - 32)
  75.     @actor = actor
  76.     refresh
  77.   end  
  78.   #--------------------------------------------------------------------------
  79.   # ● 刷新
  80.   #--------------------------------------------------------------------------
  81.   def refresh
  82.     self.contents.clear   
  83.     draw_skilltree(@actor, 160, -40) #调用draw_skilltree绘制技能树
  84. end
  85. end

  86. #============================================================================
  87. #------------------------------------------------------------------------------
  88. #
  89. #==============================================================================

  90. class Scene_skilltree######技能树场景
  91.   #include OPACITY_66RPG
  92.   #--------------------------------------------------------------------------
  93.   # ● 初始化对像
  94.   #     actor_index : 角色索引
  95.   #     menu_index : 选项起始位置
  96.   #--------------------------------------------------------------------------
  97.   def initialize(actor_index = 0 , menu_index = 0)
  98.     @actor_index = actor_index
  99.     @menu_index = menu_index
  100.   end
  101.   #--------------------------------------------------------------------------
  102.   # ● 主处理
  103.   #--------------------------------------------------------------------------
  104.   def main
  105.     s1 = "学习火球术" #########技能树菜单 根据人物不同 可以加个when 语句
  106.     s2 = "学习火山爆发"
  107.     s3 = "学习流星火雨"
  108.     s4 = "调整结束"
  109.     @command_window = Window_mp_Command.new(180, [s1,s2,s3,s4])
  110.     @command_window.index = @menu_index
  111.     @actor = $game_party.actors[@actor_index]
  112.     s_disable #####################
  113.     # 生成技能树窗口 #技能树窗口的坐标
  114.     @skilltree_window = Window_skilltree.new(@actor)
  115.     @skilltree_window.x = 180
  116.     @skilltree_window.y = 0   #技能树窗口的坐标
  117.     # 执行过渡 渐变图形的文件位置 自己设定
  118.     Graphics.transition
  119.     # 主循环
  120.     loop do# 刷新游戏画面      
  121.       Graphics.update     
  122.       Input.update # 刷新输入信息      
  123.       update# 刷新画面     
  124.       if $scene != self # 如果切换画面就中断循环
  125.         break
  126.       end
  127.     end
  128.     # 准备过渡
  129.     Graphics.freeze# 释放窗口   
  130.     @command_window.dispose
  131.     @skilltree_window.dispose
  132.     end
  133.   #--------------------------------------------------------------------------
  134.   # ● 刷新画面
  135.   #--------------------------------------------------------------------------
  136.   def update
  137.     # 刷新窗口
  138.     @command_window.update
  139.     # 选项明暗判断
  140.     s_disable
  141.     @skilltree_window.update
  142.     #=============================================================
  143.     # 按下 B 键的情况下
  144.     #=============================================================
  145.     if Input.trigger?(Input::B)
  146. #如果按取消键,则把光标移动到调整结束按钮的位置
  147.       # 演奏取消 SE
  148.       #$scene = Scene_Map.new
  149.       $game_system.se_play($data_system.cancel_se)
  150.       @command_window.index = 3
  151.       return
  152.     end
  153.     #=============================================================
  154.     # 按下 C 键的情况下
  155.     #=============================================================
  156.     if Input.trigger?(Input::C)      
  157.       if @command_window.index == 3
  158.           # 演奏确定 SE
  159.         $game_system.se_play($data_system.decision_se)      
  160.         skill_learn                ##############学会和遗忘
  161.         $scene = Scene_Map.new####回到地图
  162.         return
  163.       end      
  164.       case @command_window.index
  165.       when 0                           ###############
  166.         if @actor.skillp == 0 or @actor.skill1 == 3
  167. ##如果技能点为0 或者 技能1已经是3级 就不能再升
  168.         # 演奏冻结 SE
  169.         $game_system.se_play($data_system.buzzer_se)
  170.         return
  171.       end        
  172.         # 演奏确定 SE
  173.         $game_system.se_play($data_system.decision_se)
  174.         @actor.skill1 += 1              #######技能1升一级
  175.         @actor.skillp -= 1           #############技能点-一点
  176.         @skilltree_window.refresh           ########刷新窗口
  177.         s_disable                    #####刷新按钮明暗的显示
  178.         return
  179.       when 1                                 
  180.         if @actor.skillp == 0 or @actor.skill2 == 3 or  @actor.skill1 ==0
  181.           #如果技能点为0 或者 技能 2已经是最大等级3 或者 技能1没有升点 就不能再升级技能2
  182.           # 演奏冻结 SE
  183.         $game_system.se_play($data_system.buzzer_se)
  184.         return
  185.       end        
  186.         # 演奏确定 SE
  187.         $game_system.se_play($data_system.decision_se)
  188.         @actor.skillp -= 1              #技能点-1
  189.         @actor.skill2 += 1           #技能2升1级
  190.         @skilltree_window.refresh         
  191.         s_disable        
  192.         return
  193.       when 2                            ###############
  194.          if @actor.skillp == 0 or @actor.skill3 == 3 or  @actor.skill2 ==0
  195.            #如果技能点为0 或者 技能 2已经是最大等级3 或者 技能1没有升点 就不能再升级技能2
  196.         # 演奏冻结 SE
  197.         $game_system.se_play($data_system.buzzer_se)
  198.         return
  199.       end      
  200.         # 演奏确定 SE
  201.         $game_system.se_play($data_system.decision_se)
  202.         @actor.skill3 += 1                 ###技能3升1级
  203.         @actor.skillp -= 1               ####技能点减1
  204.         @skilltree_window.refresh
  205.         s_disable
  206.         return
  207.       end
  208.     end
  209.     #=============================================================
  210.     # 什么都没有按下的情况
  211.     #=============================================================
  212.     textNo = @command_window.index   
  213.     #=============================================================
  214.     # 按下R与L换人的情况
  215.     #=============================================================      
  216.     if Input.trigger?(Input::RIGHT)
  217.      
  218.       # 演奏光标 SE
  219.       $game_system.se_play($data_system.cursor_se)
  220.       # 移至下一位角色
  221.       @actor_index += 1
  222.       @actor_index %= $game_party.actors.size
  223.       # 切换到别的状态画面
  224.       @command_window.index = 0
  225.       $scene = Scene_skilltree.new(@actor_index , @command_window.index)      
  226.       return
  227.     end
  228.     # 按下 L 键的情况下
  229.     if Input.trigger?(Input::LEFT)     
  230.       # 演奏光标 SE
  231.       $game_system.se_play($data_system.cursor_se)
  232.       # 移至上一位角色
  233.       @actor_index += $game_party.actors.size - 1
  234.       @actor_index %= $game_party.actors.size
  235.       # 切换到别的状态画面      
  236.      @command_window.index = 0
  237.       $scene = Scene_skilltree.new(@actor_index , @command_window.index)
  238.       
  239.       return
  240.     end
  241.   end  
  242.   #--------------------------------------------------------------------------
  243.   # ● 选项明暗判断
  244.   #--------------------------------------------------------------------------
  245.   def skill_learn###############结算技能点 并习得技能的方法
  246.     learn_num = $game_party.actors.size###判断有几个角色
  247.     for i in 0 ... learn_num      
  248.       @learner = $game_party.actors
  249.       @s1 = @actor.skill1#@learner.skill1
  250.       @s2 = @actor.skill2#@learner.skill2
  251.       @s3 = @actor.skill3#@learner.skill3
  252.       case @s1
  253.       when 1
  254.         @learner.learn_skill(1)#学会等级1的技能1 id为1
  255.       when 2
  256.         @learner.learn_skill(2)#学会等级2的技能1 id为2
  257.         @learner.forget_skill(1)#把等级1的技能1 忘掉
  258.       when 3
  259.         @learner.learn_skill(3) #学会等级3的技能1 id为3
  260.         @learner.forget_skill(2)#把等级2的技能1 忘掉
  261.         @learner.forget_skill(1)#把等级1的技能1 忘掉
  262.       end
  263.       
  264.       case @s2
  265.       when 1
  266.         @learner.learn_skill(4)#学会等级1的技能2 id为4
  267.       when 2
  268.         @learner.learn_skill(5)#学会等级2的技能2 id为5
  269.         @learner.forget_skill(4)#把等级1的技能2 忘掉
  270.       when 3
  271.         @learner.learn_skill(6) #学会等级3的技能2 id为6
  272.         @learner.forget_skill(4)#把等级1的技能2 忘掉
  273.         @learner.forget_skill(5)#把等级2的技能2 忘掉
  274.       end
  275.       
  276.       case @s3
  277.       when 1
  278.         @learner.learn_skill(7)#学会等级1的技能3 id为7
  279.       when 2
  280.         @learner.learn_skill(8)#学会等级2的技能3 id为8
  281.         @learner.forget_skill(7)#把等级1的技能3 忘掉
  282.       when 3
  283.         @learner.learn_skill(9) #学会等级3的技能3 id为9
  284.         @learner.forget_skill(7)#把等级1的技能3 忘掉
  285.         @learner.forget_skill(8)#把等级2的技能3 忘掉
  286.       end
  287.       
  288.       end
  289.     end
  290.   def s_disable
  291.     #如果技能点数为0 或者 该技能已经升满 又或者前提技能一级都没有升 就把按钮现实成灰色
  292.     if @actor.skillp == 0 or @actor.skill1 == 3
  293.       @command_window.disable_item(0)
  294.     else
  295.       @command_window.able_item(0)
  296.     end
  297.     if @actor.skillp == 0 or @actor.skill2 == 3 or @actor.skill1 == 0
  298.       @command_window.disable_item(1)
  299.     else
  300.       @command_window.able_item(1)
  301.     end
  302.     if @actor.skillp == 0 or @actor.skill3 == 3 or @actor.skill2 == 0
  303.       @command_window.disable_item(2)
  304.     else
  305.       @command_window.able_item(2)
  306.     end   
  307. end
  308. end
复制代码
囡囚囨囚囨図囨囧
回复 支持 反对

使用道具 举报

Lv1.梦旅人

Mr.Gandum

梦石
0
星屑
226
在线时间
2070 小时
注册时间
2007-1-31
帖子
3039

贵宾

4
发表于 2011-12-13 15:11:51 | 只看该作者
在update的@command_window.update上头添加:
  1. cursor_index = @command_window.index
复制代码
在下头添加
  1. if cursor_index != @command_window.index
复制代码
把!=换成>就是向上,换成<就是向下。

评分

参与人数 2星屑 +214 梦石 +2 收起 理由
zhixin1997 + 200 + 2 认可答案
幻耶 + 14 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
3
星屑
6420
在线时间
1131 小时
注册时间
2007-12-26
帖子
2402
5
 楼主| 发表于 2011-12-13 15:20:42 | 只看该作者
feizhaodan 发表于 2011-12-13 15:11
在update的@command_window.update上头添加:在下头添加把!=换成>就是向上,换成

非常感谢!~~
囡囚囨囚囨図囨囧
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-2-20 15:34

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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