renpy动态可视组件的使用

国庆假期没得干,稍微学了点renpy的东西.为了实现一个能变背景图和标题等控件的音乐室,学到了这个东西.顺便水一篇博客

官方文档:可视组件 — Ren’Py 中文文档 (renpy.cn)

简单来说,这个控件的入参是一个返回控件实例的方法,在每次更新的时候调用这个方法来拿需要的控件显示出来.

我写了一个简单的包装器:

1
2
def DynWrapper(dyn,dyn_i_func,**dyn_kwargs): #把一个返回str的方法包装成一个返回指定控件的方法
return lambda st,at: (dyn(dyn_i_func(),**dyn_kwargs),None)

这个包装器的参数分别是:

  • 控件的构造器,ImageText之类,也可以是返回控件的方法
  • 一个函数,它的返回值将作为上面构造器的参数
  • 控件构造器的其他参数(kwargs)

使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
image np_title = DynamicDisplayable(DynWrapper(Text,egg.mr.nowTitle,size=50))
image np_desc = DynamicDisplayable(DynWrapper(Text,egg.mr.nowDesc,size=40))
image np_bg = DynamicDisplayable(DynWrapper(im.Blur,egg.mr.nowBgI,xrad=5.0)) #因为构造器是im.Blur,所以该控件会经过模糊处理.

screen music_room():
tag menu
add "np_bg" #显示背景
...

#音乐描述/控制
frame:
...
hbox:
...
add "np_title" #显示标题
vbox:
...
add "np_desc" #显示描述
...


renpy动态可视组件的使用
https://www.hakurei.org.cn/2024/10/05/renpy-dynamicdisplayable-wrapper/
作者
zjkimin
发布于
2024年10月5日
更新于
2024年10月5日
许可协议