Project1
标题:
哪位高手讲一下Scene_Battle中的update怎样运行的
[打印本页]
作者:
dbshy
时间:
2008-2-10 01:39
标题:
哪位高手讲一下Scene_Battle中的update怎样运行的
哪位高手讲一下Scene_Battle中的update怎样运行的
[LINE]1,#dddddd[/LINE]
帖子已被修改,详情
请看版规
。
[LINE]1,#dddddd[/LINE]
如果问题未解决,请继续提问
如果问题已解决,请结贴
若到末贴发贴时间后一周仍未结贴
管理员会自动为你过期帖子、结贴或强行认可答案(好人卡-1)
[LINE]1,#dddddd[/LINE]
此贴于 2008-2-15 20:54:39 被版主凌冰提醒,请楼主看到后对本贴做出回应。
[LINE]1,#dddddd[/LINE]
此贴于 2008-2-15 21:23:08 被版主凌冰提醒,请楼主看到后对本贴做出回应。
[LINE]1,#dddddd[/LINE]
版务信息:本贴由楼主自主结贴~
作者:
面粉
时间:
2008-2-10 11:35
不太清楚楼主需要何种解释……
这里粗略说一下……
以XP的为例。
Scene_Battle类的实例从Main方法开始执行。Main方法内,有一段
loop do
# 刷新游戏画面
Graphics.update
# 刷新输入信息
Input.update
# 刷新画面
update
# 如果画面切换的话就中断循环
if $scene != self
break
end
end
上面代码中的update就是调用Scene_Battle的Update方法。
这样子Update方法按照一定的执行周期反复执行。
update方法内,第一部分是含有大量if的条件分歧。用$开头的各种全局变量来判断某些场合的例外处理,比如
# 计时器为 0 的情况下
if $game_system.timer_working and $game_system.timer == 0
# 中断战斗
$game_temp.battle_abort = true
end
再就是负责战斗场景窗口刷新的部分
@status_window.update
@message_window.update
等等
(负责调用所有该场景窗口的update方法)。
你可以把update方法想象成每帧调用一次,这样子,该场景内所有的窗口实例的update方法都会被调用,从而实现窗口的即时刷新。
还有一部分,就是利用@phase 这个标志量,对他进行case分歧,来选择调用的合适的阶段update方法,从而达到战斗场景规律性的前进。
# 回合分支
case @phase
when 1 # 自由战斗回合
update_phase1
when 2 # 同伴命令回合
update_phase2
when 3 # 角色命令回合
update_phase3
when 4 # 主回合
update_phase4
when 5 # 战斗结束回合
update_phase5
end
(选择人物命令,选择敌人,刷新动画,====,按照@phase的逐渐累加依次进行调用)
说的也不是很清楚……咳…… [LINE]1,#dddddd[/LINE]
系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者:
link006007
时间:
2008-2-10 22:59
刷新事件 如果需要
刷新计时器
刷新图形
处理场景过度 如果需要
判断场景切换
等待行动中角色
执行,推进战斗过程(战斗,命令,结束等等根据进度执行其一)
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1