Project1
标题:
Window_Help的文字内容有时候不更新
[打印本页]
作者:
galaxys
时间:
2011-9-28 02:24
标题:
Window_Help的文字内容有时候不更新
我仿照特技界面做了一个“技能界面”,内容完全是照搬特技界面的,但是去掉了技能使用的功能,而只有移动光标查看技能描述的作用。(准备把特技系统换成技能系统)
现在的问题是,比如说当前光标的index 是0,移动到index 1的时候,Window_Help的文字内容能够更新到index 1;但把光标移回index 0,Window_Help还是显示index 1的内容。此时如果把光标移动到index 2,那么再移回index0 和1都是显示index 2的help。
工程文件太大,而且修改的地方也比较多了,就不上传了。如果有哪位大大碰巧遇到过类似的问题,就请说下当时的原因吧~没有的话我就自己继续慢慢找原因了……
应该是去掉技能使用的功能时误删了无关的功能吧…… dsu_plus_rewardpost_czw
作者:
月夜神音
时间:
2011-9-28 05:43
阁下确定你的脚本是这样吗?
#==============================================================================
# ■ Scene_ShowSkill
#------------------------------------------------------------------------------
# 显示技能画面的类。
#==============================================================================
class Scene_ShowSkill < Scene_Base
#--------------------------------------------------------------------------
# ● 初始化对像
# actor_index : 角色位置
#--------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
#--------------------------------------------------------------------------
# ● 开始处理
#--------------------------------------------------------------------------
def start
super
create_menu_background
@actor = $game_party.members[@actor_index]
@viewport = Viewport.new(0, 0, 544, 416)
@help_window = Window_Help.new
@help_window.viewport = @viewport
@status_window = Window_SkillStatus.new(0, 56, @actor)
@status_window.viewport = @viewport
@skill_window = Window_Skill.new(0, 112, 544, 304, @actor)
@skill_window.viewport = @viewport
@skill_window.help_window = @help_window
end
#--------------------------------------------------------------------------
# ● 结束处理
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@help_window.dispose
@status_window.dispose
@skill_window.dispose
end
#--------------------------------------------------------------------------
# ● 回到原画面
#--------------------------------------------------------------------------
def return_scene
$scene = Scene_Menu.new(1)
end
#--------------------------------------------------------------------------
# ● 切换至下一角色画面
#--------------------------------------------------------------------------
def next_actor
@actor_index += 1
@actor_index %= $game_party.members.size
$scene = Scene_Skill.new(@actor_index)
end
#--------------------------------------------------------------------------
# ● 切换至上一角色画面
#--------------------------------------------------------------------------
def prev_actor
@actor_index += $game_party.members.size - 1
@actor_index %= $game_party.members.size
$scene = Scene_Skill.new(@actor_index)
end
#--------------------------------------------------------------------------
# ● 更新画面
#--------------------------------------------------------------------------
def update
super
update_menu_background
@help_window.update
@status_window.update
@skill_window.update
if @skill_window.active
update_skill_selection
elsif @target_window.active
update_target_selection
end
end
#--------------------------------------------------------------------------
# ● 更新技能选择
#--------------------------------------------------------------------------
def update_skill_selection
if Input.trigger?(Input::B)
Sound.play_cancel
return_scene
elsif Input.trigger?(Input::R)
Sound.play_cursor
next_actor
elsif Input.trigger?(Input::L)
Sound.play_cursor
prev_actor
end
end
end
复制代码
作者:
亿万星辰
时间:
2011-9-28 07:30
如果只是要去掉使用功能,把对于按键的处理修改一下就好了,其他的什么都不用动~
作者:
仲秋启明
时间:
2011-9-28 13:33
需要一个update或clear
RM不在手边,指令拼不全
作者:
galaxys
时间:
2011-9-29 00:20
我找到原因了。因为我在Window_Base中自定义了一个“可以换行的draw_text”方法,然后在Window_Help中使用了它。这个方法在引用的时候会把作为参数传入的字符串的值给改掉,结果再次访问这个被改掉的字符串,当然就出问题了。
现在我加入了 “long_text = value.clone”这一行,那么就不会出这个问题了。
这个方法本身……恩……还很有改进的余地,哈哈哈哈
#--------------------------------------------------------------------------
# ● 可以换行的draw_text
# value : 文字
# x : 描画目标 X 坐标
# y : 描画目标 Y 坐标
# width : 描画目标宽度
#--------------------------------------------------------------------------
def draw_long_text(value, x, y, width)
self.contents.font.color = normal_color
yyy = []
zzz = []
lines = 1
long_text = value.clone
loop do
if long_text.index("\n") == nil
zzz[lines] = long_text
break
end
yyy[lines] = long_text.index("\n")
zzz[lines] = long_text.slice!(0,yyy[lines])
long_text = long_text.slice!(1,long_text.size-1)
lines += 1
end
for i in 1..lines
self.contents.draw_text(x, y + (i-1) * 32, width, WLH, zzz[i])
end
end
复制代码
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1