设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1406|回复: 3
打印 上一主题 下一主题

[已经过期] 文本内容上移

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3191
在线时间
1864 小时
注册时间
2010-6-19
帖子
1205
跳转到指定楼层
1
发表于 2022-10-28 11:29:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 黑米馒头 于 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

Lv3.寻梦者

梦石
0
星屑
2821
在线时间
585 小时
注册时间
2022-7-13
帖子
89
2
发表于 2022-10-29 11:50:36 | 只看该作者
本帖最后由 我为鱼肉 于 2022-10-29 12:10 编辑

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

至于如何确实这个变量的值……
在添加文本的时候就开始判断描绘这一段文本需要多少行,再把各行内容添加到该变量的对应位置上即可
split分割字符串
text_size(str).width字符串宽度(描绘)

点评

新手有点懵,能帮忙弄个范例吗  发表于 2022-10-30 22:21
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4481
在线时间
380 小时
注册时间
2012-11-8
帖子
272
3
发表于 2022-10-31 16:33:59 | 只看该作者
首先文本自行分好行(用回车),text_lines = text.split(/\n/),得到的text_lines数组就是每行的文本,text_lines.size就是行数
生成bitmap,宽度为文本显示宽度,高度为行数*行高,如果文本与边框要边距再自行计算加上
viewport.bitmap绑定那个已绘制文字bitmap
改变viewport.bitmap.oy值即可实现文本整体上移
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-2 20:28

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表