Project1

标题: 文本内容上移 [打印本页]

作者: 黑米馒头    时间: 2022-10-28 11:29
标题: 文本内容上移
本帖最后由 黑米馒头 于 2022-10-28 11:30 编辑

下面这个脚本可以显示信息文本,
功能为,在窗口显示文本,最高可以显示18行,但是当屏幕显示满18行之后,就无法继续显示后面的文本内容了(内容超过了窗口高度),
只能用代码$message_sprite.bitmap.clear把文本内容清空,然后修改索引位置,以达到显示后面的文本内容,要如何修改
索引$message_index=19的时候,前面的文本内容往上移动的效果



RUBY 代码复制
  1. viewport = Viewport.new(0,0,640,480)
  2.         viewport.z = 200
  3.         $message_sprite = Sprite.new(viewport)
  4.         $message_sprite.bitmap = Bitmap.new(640,480)
  5.         $message_sprite.x = 6
  6.         $message_sprite.y = 5
  7.         $message_sprite.z = 99999
  8.         $message_sprite.visible = true
  9.         $message_sprite.bitmap.font.size = 15
  10.         $message_sprite.bitmap.font.color.set(255,255,255,255)
  11.  
  12.  
  13. class Window_Goods < Window_Base
  14.   def initialize
  15.     super(0, 0, 42, 42)
  16.     self.opacity = 120
  17.     self.visible = true
  18.     $game_party.update_message("养成存档习惯,避免从头再来!","_系统")
  19.   end
  20. end   
  21.   def update_message(txt,a="_系统")
  22.     bitmap = RPG::Cache.picture(a)
  23.     rect = Rect.new(0,0,bitmap.width,bitmap.height)
  24.     if $message_index < 19
  25.       $message_sprite.bitmap.blt(1,4 + $message_index * 25, bitmap,rect)
  26.       $message_sprite.bitmap.draw_text(5+bitmap.width, 4 + $message_index * 25, 300,bitmap.height, txt)
  27.       $message_index += 1
  28.     else
  29.       $message_sprite.bitmap.clear
  30.       $message_sprite.bitmap.blt(1,4,bitmap,rect)
  31.       $message_sprite.bitmap.draw_text(5+bitmap.width, 4, 300,bitmap.height, txt)
  32.       $message_index = 1
  33.     end
  34.   end

作者: 我为鱼肉    时间: 2022-10-29 11:50
本帖最后由 我为鱼肉 于 2022-10-29 12:10 编辑

用某变量记录每一行的文本
如果这个变量有变化则重新描绘contents(窗口内容,或者bitmap)
而描绘contents就是循环这个变量,把每一行的内容依次描绘即可

至于如何确实这个变量的值……
在添加文本的时候就开始判断描绘这一段文本需要多少行,再把各行内容添加到该变量的对应位置上即可
split分割字符串
text_size(str).width字符串宽度(描绘)
作者: qq634488405    时间: 2022-10-31 16:33
首先文本自行分好行(用回车),text_lines = text.split(/\n/),得到的text_lines数组就是每行的文本,text_lines.size就是行数
生成bitmap,宽度为文本显示宽度,高度为行数*行高,如果文本与边框要边距再自行计算加上
viewport.bitmap绑定那个已绘制文字bitmap
改变viewport.bitmap.oy值即可实现文本整体上移




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