你要的是这种效果吧
[RenPy] 纯文本查看 复制代码 init python:
musicLrc = """[00:03.50]传奇
[00:19.10]作词:刘兵 作曲:李健
[00:20.60]演唱:王菲
[00:26.60]
[04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
[04:49.00]
[02:47.44][00:43.69]再也没能忘掉你容颜
[02:54.83][00:51.24]梦想着偶然能有一天再相见
[03:02.32][00:58.75]从此我开始孤单思念
[03:08.15][01:04.30]
[03:09.35][01:05.50]想你时你在天边
[03:16.90][01:13.13]想你时你在眼前
[03:24.42][01:20.92]想你时你在脑海
[03:31.85][01:28.44]想你时你在心田
[03:38.67][01:35.05]
[04:09.96][03:39.87][01:36.25]宁愿相信我们前世有约
[04:16.37][03:46.38][01:42.47]今生的爱情故事 不会再改变
[04:24.82][03:54.83][01:51.18]宁愿用这一生等你发现
[04:31.38][04:01.40][01:57.43]我一直在你身旁 从未走远
[04:39.55][04:09.00][02:07.85]"""
import os
import time
gc_list = [] #歌词列表
dictLrc = {} #创建字典类型,全局变量
#打印歌词,按照时间顺序,
def lrcTime(lrc):
dictLrc = lrc #将形参赋值给实参
listLrc = sorted(dictLrc) #将字典的key值(时间)按大小排序
timeLen = len(listLrc)#读取出列表数量,即打印时循环多少次
timeFree = 0 #定义暂停时间
count = 0
for i in listLrc: #循环列表中的值,也就是字典中的key,
timeFree = i -count #得出暂停时间
# time.sleep(timeFree) #暂停
renpy.pause(timeFree) #renpy暂停
gc_list.append(dictLrc[i]) #添加歌词
#print(dictLrc[i]) #打印出歌词
count = i #将上一个时间赋值给count,下一次循环继续使用
#将时间转换为秒
def revertTime(time):#传入的为字符串格式的
time1 = time
timeList = time1.split(":")#以:将时间拆分为分 和 秒
return round(float(timeList[0]) * 60 + float(timeList[1]),2) #返回时间为秒,保留两位小数
# #从文件家中读取歌词
# def getLrc():
# rf = open("lrc.txt","r",errors = "ignore")
# getlrc = rf.read()
# rf.close()
# return getlrc #返回为字符串
#拆分,应该转换成字典类型,以时间为key,歌词为value
def splitStr(getstr):#接收的为字符串
global dictLrc #创建字典类型
getStr = getstr
count = 0 #获取该单词需要输出几次
for i in getStr: #以][ ] [ 进行拆分
if i =="[":
count +=1
#注意替换顺序不能变,先替换"][",在替换单个的,否则可能出现两个**
getStr = getStr.replace("][","*")
getStr = getStr.replace("[","*")
getStr = getStr.replace("]","*")
lineLrc = getStr.split("*")
for i in range(1,count+1): #循环多次,得到多个key值
#将时间转换成秒的格式
LrcTimes = revertTime(lineLrc[i]) #调用转换时间的函数,此时key为秒
dictLrc[LrcTimes] = lineLrc[-1] #将列表最后一个歌词复制给字典key
#打印歌词函数
def printLrc(lrc):
lrc1 = lrc
for i in lrc1: # i 为字符串歌词
splitStr(i) #调用拆分函数
def a():
# lrc = getLrc()#字符串类型
listLrc = musicLrc.split("\n")#以换行符将字符串拆分成列表
printLrc(listLrc)
lrcTime(dictLrc)
c_ui_darkblue = "#000022AA"
c_ui_brown = "#D2B48C66"
# 7.消息界面
screen message():
frame:
background c_ui_brown
xysize(300,300)
align(0.5,0.5)
if len(gc_list) > 4:
$ aa = len(gc_list)
$ results = aa - 4
$ del gc_list[:results]
vbox:
for y in gc_list:
#$ a = gc_list[-1] #列表最后一个元素,也就是当前歌词
text "[y]"
label start:
"111111"
play music "music/wf_cq.wav" #播放王菲的传奇
show screen message #调用消息界面
$ a()
"aaaa"
"bbb"
"ccc"
"ddddd"
"aaaaaaaaaaaaa"
这是原贴https://blog.csdn.net/lmxt520/article/details/79675972
不知道怎么实现让 gc_list.append(dictLrc) #添加歌词 延缓几秒执行,只能暂停整个程序 |