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

Project1

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

[已经解决] 光标为什么不能停留在窗口上

[复制链接]

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
跳转到指定楼层
1
发表于 2016-3-15 22:55:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 RyanBern 于 2016-3-16 14:02 编辑

为什么默认脚本按了C键后,光标依然能出现在状态窗口上,不会自动进入“装备窗口”上;而我的脚本却按了C键后,光标不会停留出现在状态窗口上,而是自动进入“装备窗口”上?
具体地说,就是:
在默认脚本和我的脚本同个位置添加“p "000"”,同样按C键后,默认脚本光标出现在状态窗口上,需要继续按C键,才会出现“"000"”然后进入“装备窗口”,而我的脚本却先出现“"000"”然后无须再按C键就自动进入“装备窗口”。
我想知道,为什么默认脚本能作到按C键后,不会先出现“p "000"”并且光标出现在状态窗口上,需要继续按C键,才会出现“"000"”然后进入“装备窗口”?
RUBY 代码复制
  1. def update_status
  2.     #如果按B键
  3.     if Input.trigger?(Input::B)
  4.       #命令窗口激活
  5.       @window_commond.active = true
  6.       #状态窗口熄灭
  7.       @status_window.active  = false
  8.       #状态窗口光标
  9.       @status_window.index  = -1
  10.     end
  11.     #如果按C键
  12.     if Input.trigger?(Input::C)
  13.       case @window_commond.index
  14.         when 0
  15.           p "000"
  16.           #切换到装备画面
  17.           $scene = Scene_Equip.new
  18.       end
  19.     end
  20.   end

Lv4.逐梦者

梦石
0
星屑
12157
在线时间
4435 小时
注册时间
2014-4-11
帖子
5955

开拓者

2
发表于 2016-3-15 23:24:39 | 只看该作者
@status_window.index这个是光标位置,第一个是0,之后每个加1

点评

我去思考下,等再弄清 来反馈!  发表于 2016-3-16 00:03
哦,我也试了,结果是 光标只能作用于 第一个人物,其他人物光标不起作用!  发表于 2016-3-16 00:02
默认脚本返回是有设置返回到哪个.index  发表于 2016-3-16 00:00
我是说你的脚本里被你改了这个地方  发表于 2016-3-15 23:59
你误解我意思了。我改了脚本,我设定第一个位置 是 装备  发表于 2016-3-15 23:43
回复 支持 反对

使用道具 举报

Lv4.逐梦者

「Pemercyia」


Urhurrenna

梦石
0
星屑
9397
在线时间
2748 小时
注册时间
2008-9-5
帖子
3543

开拓者短篇八RM组冠军短篇九导演组亚军白银编剧

3
发表于 2016-3-15 23:34:14 | 只看该作者
因为你的脚本在update_command(无误?)方法里按下C键的场合直接转到装备界面了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4169
在线时间
258 小时
注册时间
2013-10-13
帖子
815
4
 楼主| 发表于 2016-3-15 23:42:23 | 只看该作者
“因为你的脚本在update_command(无误?)方法里按下C键的场合直接转到装备界面了……”
——从来就没有!我试过了,把$scene = Scene_Equip.new删除掉,光标可以在 命令窗口 和 状态 窗口 之间 自由切换的。

评分

参与人数 1星屑 +66 收起 理由
cinderelmini + 66 TvT……窝看错了…………

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

梦石
0
星屑
9532
在线时间
5073 小时
注册时间
2013-6-21
帖子
3580

开拓者贵宾剧作品鉴家

5
发表于 2016-3-16 14:00:39 | 只看该作者
似乎是这个问题@cinderelmini
update方法在判断按键的时候,后面必须跟return,否则会连续判断,效果就和连点差不多。
RUBY 代码复制
  1. def update
  2.   if @command_window.active
  3.     update_command
  4.   end
  5.   if @status_window.active
  6.     update_status
  7.   end
  8.   # other updates
  9. end
  10. def update_command
  11.   if Input.trigger?(Input::C)
  12.     # deactivate command window and activate status window
  13.   end
  14.   # other input events
  15. end
  16. def update_status
  17.   if Input.trigger?(Input::C)
  18.     case @window_commond.index
  19.     when 0
  20.       #切换到装备画面
  21.       $scene = Scene_Equip.new
  22.     end
  23.   end
  24. end

脚本这样写是不对的,当按下C键的时候,update_command和update_window会同时判断(因为这出现在同一次update中),因此会出现连点效果。

解决办法就是每次update之后要及时return掉,这样才不会进行后面的判断。
RUBY 代码复制
  1. def update
  2.   if @command_window.active
  3.     update_command
  4.     return # <- 'return' can't be ignored
  5.   end
  6.   if @status_window.active
  7.     update_status
  8.     return # <- 'return' can't be ignored
  9.   end
  10. end

同样,update_status的每个按键分歧,最好都要在末尾return一下。防止玩家同时按下两个按键。

点评

终于明白是什么意思了  发表于 2016-3-16 17:10
...因此,Input.trigger?(Input::C)的判定依然生效。所以会产生连点效果。  发表于 2016-3-16 17:08
return的含义是结束当前方法执行。如果不写这句的话update就会继续判断,这样的话自动执行update_status,此时在同一次刷新中,因此...  发表于 2016-3-16 17:06
我现在知道是return,可是不知道为什么  发表于 2016-3-16 17:02
居然是这个问题…………  发表于 2016-3-16 16:56
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 03:29

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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