赞 | 289 |
VIP | 0 |
好人卡 | 0 |
积分 | 85 |
经验 | 0 |
最后登录 | 2019-7-14 |
在线时间 | 775 小时 |
Lv4.逐梦者
- 梦石
- 0
- 星屑
- 8498
- 在线时间
- 775 小时
- 注册时间
- 2017-11-10
- 帖子
- 1231
|
3楼
楼主 |
发表于 2018-4-6 18:29:38
|
只看该作者
本帖最后由 文雅夕露 于 2018-4-6 18:31 编辑
按照芯前辈的方法稍微整理了一下,发现了不少问题。
可能是我写的方法有一些问题...
刷新好像有点问题。
只有在使用物品或者特技时才会显示帮助。
战斗的话,直接把帮助窗口给消失掉了...
- module Helpset
- Move = 3
- Width_MAX = 480
- Over_windowhelp = true
- end
- #==============================================================================
- # ■ Window_MoveHelp
- #------------------------------------------------------------------------------
- # 逐个字描绘的帮助窗口
- #==============================================================================
- class Window_MoveHelp < Window_Base
- #--------------------------------------------------------------------------
- # ● 初始化对像
- #--------------------------------------------------------------------------
- def initialize
- super(0, 0, 640, 64)
- self.contents = Bitmap.new(width - 32, height - 32)
- end
- #--------------------------------------------------------------------------
- # ● 设置文本
- # text : 窗口显示的字符串
- # align : 对齐方式 (0..左对齐、1..中间对齐、2..右对齐)
- #--------------------------------------------------------------------------
- def set_text(text, align = 0)
- # 初始化文本数组
- @text_array = text.split("")
- #记录文本位置
- @text_pos = {:x=>0,:y=>0}
- # 如果文本和对齐方式的至少一方与上次的不同
- if text != @text or align != @align
- self.contents.clear
- end
- end
- #--------------------------------------------------------------------------
- # ● 逐个字开始描绘
- #--------------------------------------------------------------------------
- def play_onetext
- tx = @text_array.shift #获取并删除文字数组第一个字。
- cw = contents.text_size(tx).width #获取描绘这个字需要的宽度。
- if @text_pos[:x] + cw > Helpset::Width_MAX #如果描绘的坐标X加上宽度超过 xxx ,就换行。
- @text_pos[:x] = 0
- @text_pos[:y] += 32 #假如行距是 32 。
- end
- self.contents.draw_text(@text_pos[:x], @text_pos[:y], cw, 32, tx) #描绘这个文字。
- @text_pos[:x] += cw #宽度累加。
- end
- #--------------------------------------------------------------------------
- # ● 刷新
- #--------------------------------------------------------------------------
- def update
- play_onetext if @text_array && @text_array.size > 0 && Graphics.frame_count % Helpset::Move == 0
- end
- #--------------------------------------------------------------------------
- # ● 设置角色
- # actor : 要显示状态的角色
- #--------------------------------------------------------------------------
- def set_actor(actor)
- if actor != @actor
- self.contents.clear
- draw_actor_name(actor, 4, 0)
- draw_actor_state(actor, 140, 0)
- draw_actor_hp(actor, 284, 0)
- draw_actor_sp(actor, 460, 0)
- @actor = actor
- @text = nil
- self.visible = true
- end
- end
- #--------------------------------------------------------------------------
- # ● 设置敌人
- # enemy : 要显示名字和状态的敌人
- #--------------------------------------------------------------------------
- def set_enemy(enemy)
- text = enemy.name
- state_text = make_battler_state_text(enemy, 112, false)
- if state_text != ""
- text += " " + state_text
- end
- set_text(text, 1)
- end
- end
- #--------------------------------------------------------------------------
- # ● 覆盖模式
- #--------------------------------------------------------------------------
- Window_Help = Window_MoveHelp if Helpset::Over_windowhelp
复制代码 |
|