Project1

标题: 打字效果的帮助窗口 [打印本页]

作者: DeathKing    时间: 2013-9-30 13:20
标题: 打字效果的帮助窗口
本帖最后由 DeathKing 于 2013-9-30 19:33 编辑


图片较大……会加载一会儿

See it in Github:https://github.com/DeathKing/fscript

这个东西还有个好处就是可以像对话框那样处理特殊字符:



RUBY 代码复制
  1. #===============================================================================
  2. # ■ [VA] 打字效果的帮助窗口
  3. #    [VA] TypingHelp
  4. #-------------------------------------------------------------------------------
  5. #    让显示物品说明的帮助窗口有打字效果
  6. #   
  7. #-------------------------------------------------------------------------------
  8. #    更新作者: DeathKing
  9. #    许可协议: FSL
  10. #    项目版本: 1.0.0930
  11. #    最后更新: 2013-09-30
  12. #    引用网址:
  13. #-------------------------------------------------------------------------------
  14. #    如果只需要部分应用打字效果,请将下面的“覆写模式”选项设置为false,并手动为需要
  15. #    的窗口设置为 Window_HelpEx 。这个功能只推荐高级玩家使用。
  16. #
  17. #-------------------------------------------------------------------------------
  18. #    - 1.0.0930 By DeathKing
  19. #      * 初始版本完成;
  20. #
  21. #===============================================================================
  22. $fscript ||= {}
  23. $fscript["TypingHelp"] = "1.0.0930"
  24.  
  25. #-------------------------------------------------------------------------------
  26. # ▼ 登记FSL
  27. #-------------------------------------------------------------------------------
  28.  
  29. module FSL
  30.   module TypingHelp
  31.     # 每几帧刷新一个字
  32.     # 推荐设置:1、2、3
  33.     TURN = 2
  34.  
  35.     # 覆写模式:是否用此脚本替代原有的Window_Help
  36.     # 推荐设置:false
  37.     OVERWRITE_WINDOW_HELP = true
  38.  
  39.   end
  40. end
  41.  
  42. #==============================================================================
  43. # ■ Window_Help
  44. #------------------------------------------------------------------------------
  45. #  显示特技和物品等的说明、以及角色状态的窗口
  46. #==============================================================================
  47.  
  48. class Window_HelpEx < Window_Help
  49.  
  50.   include FSL::TypingHelp
  51.  
  52.   #--------------------------------------------------------------------------
  53.   # ● 初始化对象
  54.   #--------------------------------------------------------------------------
  55.   def initialize(line_number = 2)
  56.     super
  57.     @text = ""
  58.   end
  59.   #--------------------------------------------------------------------------
  60.   # ● 刷新
  61.   #--------------------------------------------------------------------------
  62.   def refresh
  63.     contents.clear
  64.     reset_font_settings
  65.     @text = convert_escape_characters(@text)
  66.     @pos = {:x => x, :y => y, :new_x => x, :height => calc_line_height(@text)}
  67.     update
  68.   end
  69.   #--------------------------------------------------------------------------
  70.   # ● 更新
  71.   #--------------------------------------------------------------------------
  72.   def update
  73.     if Graphics.frame_count % TURN == 0
  74.       process_character(@text.slice!(0, 1), @text, @pos) unless @text.empty?
  75.     end
  76.   end
  77. end
  78.  
  79. Window_Help = Window_HelpEx if FSL::TypingHelp::OVERWRITE_WINDOW_HELP

github_icon_vector_shape_1x.png (21.83 KB, 下载次数: 26)

github_icon_vector_shape_1x.png

作者: fux4    时间: 2013-9-30 13:38
神奇。。代码如此短
作者: DeathKing    时间: 2013-9-30 15:38
fux4 发表于 2013-9-30 13:38
神奇。。代码如此短

其实你弄清Scene和Window的机理后理解这个脚本就不难了。还有,RGSS3中Window_Base新定义的几个方法尤其的好用。
作者: 喵呜喵5    时间: 2013-10-1 07:09
感觉受教了
frame_count取余以及最后一句代码都是我从没想到过的…
虽然最后一句代码的原理稍微还是有点不理解不过因为会用了所以没问题!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1