找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 46726|回复: 13

[已解决] 请问怎么给Text组件添加一个背景

[复制链接]
发表于 2019-10-13 20:37:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
因为是做的实时字幕
所以想在字幕上加一个纯色背景看上去舒服一点
QQ截图20191013203451.jpg
类似于这种效果

一开始跟着教程走
[RenPy] 纯文本查看 复制代码
screen text_example():
    frame:
        xalign 0.5 ypos 50
        text _("This is a text displayable."):
            size 30
 

然后修改Frame的背景图片之后
其他会用到Frame的组件的背景图也会受到影响
原有的Frame的背景图有个框又不太好看

目前的代码是这个样子
[RenPy] 纯文本查看 复制代码
    text "{k=3}就是这段文字想加一个纯色的背景{/k}":
        color "#ffffff"
        outlines [ (absolute(3), "#000", absolute(0), absolute(0)) ]
        xalign 0.5 ypos 0.8
        size 25
        at transform:
            alpha 0.0
            pause 17.5
            alpha 1.0
            pause 1.41
            alpha 0.0

于是现在我应该怎么操作才能实现上面图片那个效果?
发表于 2019-10-14 13:26:06 | 显示全部楼层
弄两个hbox,上面放背景图片,下面放text,调节位置,就可以让文字在这个框里了。
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2019-10-14 23:09:36 | 显示全部楼层
blackpineapple 发表于 2019-10-14 13:26
弄两个hbox,上面放背景图片,下面放text,调节位置,就可以让文字在这个框里了。 ...

额……有具体的代码么
回复 支持 抱歉

使用道具 举报

发表于 2019-10-15 14:20:27 | 显示全部楼层
zsc2015 发表于 2019-10-14 23:09
额……有具体的代码么

[RenPy] 纯文本查看 复制代码
fixed:
        hbox:
            xpox 100 # 调整到合适到位置
            ypox 100 # 调整到合适到位置
            add "gui/xxxx.png" #你想做背景的图片地址
        hbox:
            xpox 100 # 调整到合适到位置
            ypox 100 # 调整到合适到位置
            text "文字"
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2019-10-16 11:46:36 | 显示全部楼层
这样子好像有个问题
底框不能随着文字内容增减自己发生变化
而且文字消失的话也不能随着文字一起消失?
回复 支持 抱歉

使用道具 举报

发表于 2019-10-20 05:28:10 | 显示全部楼层
zsc2015 发表于 2019-10-16 11:46
这样子好像有个问题
底框不能随着文字内容增减自己发生变化
而且文字消失的话也不能随着文字一起消失? ...

那需要在这个screen加更多的细节,而且需要文字结束之后hide这个screen。
回复 支持 抱歉

使用道具 举报

发表于 2019-10-22 15:45:45 | 显示全部楼层
可以参考官方教程里screen.rpy中namebox的定义:

style namebox:
    xpos gui.name_xpos
    xanchor gui.name_xalign
    xsize gui.namebox_width
    ypos gui.name_ypos
    ysize gui.namebox_height

    background Frame("gui/namebox.png", gui.namebox_borders, tile=gui.namebox_tile, xalign=gui.name_xalign)
    padding gui.namebox_borders.padding

background特性是一个Frame对象,并且指定图像使用tile图片。这样就可以根据文本长度自动匹配合适的背景大小了。
坐标和字体等特性请自己修改下,然后应用修改后的样式应该就可以了。
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2019-10-22 23:12:06 | 显示全部楼层
被诅咒的章鱼 发表于 2019-10-22 15:45
可以参考官方教程里screen.rpy中namebox的定义:

style namebox:


我说的实时字幕是指这种
[RenPy] 纯文本查看 复制代码
screen wenben1():
    

    text _("{k=3}这是第一句台词{/k}"):
        color "#ffffff"
        outlines [ (absolute(3), "#000", absolute(0), absolute(0)) ]
        
        xalign 0.5 ypos 0.8
        size 25
        at transform:

            alpha 0.0
            pause 2.3
            alpha 1.0
            pause 2.5
            alpha 0.0


    text _("{k=3}过了一会之后这是第二句{/k}"):
        color "#ffffff"
        outlines [ (absolute(3), "#000", absolute(0), absolute(0)) ]
        xalign 0.5 ypos 0.8
        size 25
        at transform:
            alpha 0.0
            pause 6.2
            alpha 1.0
            pause 1.0
            alpha 0.0
    text _("{k=3}又过了一会这是第3句{/k}"):
        color "#ffffff"
        outlines [ (absolute(3), "#000", absolute(0), absolute(0)) ]
        xalign 0.5 ypos 0.8
        size 25
        at transform:
            alpha 0.0
            pause 7.68
            alpha 1.0
            pause 1.21
            alpha 0.0


原本想实现的效果是在播放音乐或者影片的时候
做一个类似外挂字幕的东西上去显示实时的台词
因为弄不来让TEXT消失
所以做成了控制透明度来达成近似的效果
貌似dalao你的代码好像并不能应用在我这种场合里
是不是我这种显示的方法也需要改才能套用?
回复 支持 抱歉

使用道具 举报

发表于 2019-10-23 10:48:18 | 显示全部楼层
zsc2015 发表于 2019-10-22 23:12

我说的实时字幕是指这种
[mw_shl_code=renpy,true]screen wenben1():

我只是回答标题中“给Text组件添加背景”。
你的需求,最好写个自定义组件,实现从“字幕文件”读取:显示内容和显示时长。
然后在显示是应用上面回答中,样式(style)的部分。
回复 支持 抱歉

使用道具 举报

 楼主| 发表于 2019-10-23 18:53:34 | 显示全部楼层
被诅咒的章鱼 发表于 2019-10-23 10:48
我只是回答标题中“给Text组件添加背景”。
你的需求,最好写个自定义组件,实现从“字幕文件”读取:显 ...

唔如果是从字幕文件读取的话
又是怎么个步骤?
回复 支持 抱歉

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|RenPy中文空间 ( 苏ICP备17067825号|苏公网安备 32092302000068号 )

GMT+8, 2024-12-23 14:43 , Processed in 0.133224 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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