Project1
标题: 光标为什么不能停留在窗口上 [打印本页]
作者: kvkv97 时间: 2016-3-15 22:55
标题: 光标为什么不能停留在窗口上
本帖最后由 RyanBern 于 2016-3-16 14:02 编辑
为什么默认脚本按了C键后,光标依然能出现在状态窗口上,不会自动进入“装备窗口”上;而我的脚本却按了C键后,光标不会停留出现在状态窗口上,而是自动进入“装备窗口”上?
具体地说,就是:
在默认脚本和我的脚本同个位置添加“p "000"”,同样按C键后,默认脚本光标出现在状态窗口上,需要继续按C键,才会出现“"000"”然后进入“装备窗口”,而我的脚本却先出现“"000"”然后无须再按C键就自动进入“装备窗口”。
我想知道,为什么默认脚本能作到按C键后,不会先出现“p "000"”并且光标出现在状态窗口上,需要继续按C键,才会出现“"000"”然后进入“装备窗口”?
def update_status
#如果按B键
if Input.trigger?(Input::B)
#命令窗口激活
@window_commond.active = true
#状态窗口熄灭
@status_window.active = false
#状态窗口光标
@status_window.index = -1
end
#如果按C键
if Input.trigger?(Input::C)
case @window_commond.index
when 0
p "000"
#切换到装备画面
$scene = Scene_Equip.new
end
end
end
def update_status
#如果按B键
if Input.trigger?(Input::B)
#命令窗口激活
@window_commond.active = true
#状态窗口熄灭
@status_window.active = false
#状态窗口光标
@status_window.index = -1
end
#如果按C键
if Input.trigger?(Input::C)
case @window_commond.index
when 0
p "000"
#切换到装备画面
$scene = Scene_Equip.new
end
end
end
作者: yang1zhi 时间: 2016-3-15 23:24
@status_window.index这个是光标位置,第一个是0,之后每个加1
作者: cinderelmini 时间: 2016-3-15 23:34
因为你的脚本在update_command(无误?)方法里按下C键的场合直接转到装备界面了……
作者: kvkv97 时间: 2016-3-15 23:42
“因为你的脚本在update_command(无误?)方法里按下C键的场合直接转到装备界面了……”
——从来就没有!我试过了,把$scene = Scene_Equip.new删除掉,光标可以在 命令窗口 和 状态 窗口 之间 自由切换的。
作者: RyanBern 时间: 2016-3-16 14:00
似乎是这个问题@cinderelmini
update方法在判断按键的时候,后面必须跟return,否则会连续判断,效果就和连点差不多。
def update
if @command_window.active
update_command
end
if @status_window.active
update_status
end
# other updates
end
def update_command
if Input.trigger?(Input::C)
# deactivate command window and activate status window
end
# other input events
end
def update_status
if Input.trigger?(Input::C)
case @window_commond.index
when 0
#切换到装备画面
$scene = Scene_Equip.new
end
end
end
def update
if @command_window.active
update_command
end
if @status_window.active
update_status
end
# other updates
end
def update_command
if Input.trigger?(Input::C)
# deactivate command window and activate status window
end
# other input events
end
def update_status
if Input.trigger?(Input::C)
case @window_commond.index
when 0
#切换到装备画面
$scene = Scene_Equip.new
end
end
end
脚本这样写是不对的,当按下C键的时候,update_command和update_window会同时判断(因为这出现在同一次update中),因此会出现连点效果。
解决办法就是每次update之后要及时return掉,这样才不会进行后面的判断。
def update
if @command_window.active
update_command
return # <- 'return' can't be ignored
end
if @status_window.active
update_status
return # <- 'return' can't be ignored
end
end
def update
if @command_window.active
update_command
return # <- 'return' can't be ignored
end
if @status_window.active
update_status
return # <- 'return' can't be ignored
end
end
同样,update_status的每个按键分歧,最好都要在末尾return一下。防止玩家同时按下两个按键。
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |