博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AS3 歌词同步
阅读量:7120 次
发布时间:2019-06-28

本文共 2030 字,大约阅读时间需要 6 分钟。

这里实例素材:

我们不一样.lrc

我们不一样.mp3

 

歌词同步其实就是靠lrc文本文件,打开它,可以看到时间点和对应的歌词。

打开lrc内容如下:

[ti:我们不一样]

[ar:大壮]
[al:]
[by:错爱QQ]
[t_time:(04:30)]
[00:00.00]歌词千寻 www.lrcgc.com
[00:01.11]我们不一样
[00:05.07]演唱:大壮
[00:08.26]词曲:高进
[00:11.29]编曲:张亮
[00:14.85]缩混:侯春阳
[00:20.04]
[00:34.81]这么多年的兄弟
[00:37.27]有谁比我更了解你
[00:41.52]太多太多不容易
[00:43.90]磨平了岁月和脾气
[00:48.35]时间转眼就过去
[00:50.90]这身后不散的筵席
[00:54.52]只因为我们还在
[00:57.39]心留在原地
[00:59.39]
[01:01.41]张开手需要多大的勇气
[01:08.37]这片天你我一起撑起
[01:15.10]更努力只为了我们想要的明天
[01:21.85]好好的这份情好好珍惜
[01:26.81]
[01:28.85]我们不一样
[01:31.77]每一个人都有不同的境遇
[01:35.83]我们在这里在这里等你
[01:42.27]我们不一样
[01:45.26]虽然会经历不同的事情
[01:49.48]我们都希望来生还能相遇
[01:55.28]
[01:57.29]这么多年的兄弟
[01:59.85]有谁比我更了解你
[02:04.12]太多太多不容易
[02:06.51]磨平了岁月和脾气
[02:10.73]时间转眼就过去
[02:13.30]这身后不散的筵席
[02:16.94]只因为我们还在
[02:19.64]心留在原地
[02:23.76]张开手需要多大的勇气
[02:30.51]这片天你我一起撑起
[02:36.66]更努力只为了我们想要的明天
[02:44.16]好好的这份情好好珍惜
[02:49.19]
[02:51.26]我们不一样
[02:53.81]每一个人都有不同的境遇
[02:58.14]我们在这里在这里等你
[03:04.87]我们不一样
[03:07.49]虽然会经历不同的事情
[03:11.80]我们都希望来生还能相遇
[03:17.44]
[03:34.16]我们不一样
[03:36.91]每一个人都有不同的境遇
[03:40.73]我们在这里在这里等你
[03:47.83]我们不一样
[03:50.50]虽然会经历不同的事情
[03:54.63]我们都希望来生还能相遇
[04:01.18]我们不一样
[04:04.21]虽然会经历不同的事情
[04:08.36]我们都希望来生还能相遇
[04:15.23]我们都希望来生还能相遇
[04:21.20]歌词编辑:错爱QQ 1320395669
[04:25.86]
找歌词,上歌词千寻 www.lrcgc.com。支持歌词找歌名,LRC歌词免费下载。

 

歌词同步原理很简单,就是将时间点转换为以毫秒为单位的时间,然后根据歌曲播放的position也就是播放到的时间,显示对应的歌词。

简单源码如下:

//装载歌词时间与内容var lrcArr:Array = new Array();//加载声音的类var sd:Sound = new Sound();//开始加载外部歌曲sd.load(new URLRequest("我们不一样.mp3"));//开始播放,并将其赋值给SoundChannel类对象,这样才可以获取播放的进度var sdCtrl:SoundChannel = sd.play();//加载lrc文本的类对象var urlLdr:URLLoader = new URLLoader();//开始加载歌词文本urlLdr.load(new URLRequest("我们不一样.lrc"));//侦听歌词文本是否加载完毕urlLdr.addEventListener(Event.COMPLETE,onLoad_Fun);//歌词文本加载完毕function onLoad_Fun(e:Event):void{	//将歌词文本全部内容存入str变量	var str:String = urlLdr.data;	//根据换行符转化成数组	var childArr:Array = str.split("\n");	//正则表达式,大致内容就是获取时间	var reg:RegExp = /\[[0-5][0-9]:[0-5][0-9].[0-9][0-9]\]/g;	//循环整个数组	for (var i:int=0; i

  

转载于:https://www.cnblogs.com/dt1991/p/9162684.html

你可能感兴趣的文章
一个维护版本日志整洁的Git提交规范
查看>>
单例模式总结
查看>>
bootstrapSwitch bootstrap 的开关组件扩展
查看>>
冒泡排序
查看>>
阿里云 OSS 如何设置防盗链, 上个月图床流量耗费50G+,请求次数10W+,什么鬼?
查看>>
Node.js折腾记一(改进):文件夹目录树获取
查看>>
【机器学习】深度学习开发环境搭建
查看>>
Spring核心技术原理-(1)-通过Web开发演进过程了解一下为什么要有Spring?
查看>>
聊聊Elasticsearch RestClient的RequestLogger
查看>>
iOS视频采集实战(AVCaptureSession)
查看>>
使用java9的uuid生成方式,让uuid生成速度提升一个档次
查看>>
SpringData JDBC
查看>>
Vue源码阅读一:说说vue.nextTick实现
查看>>
《iOS面试之道》算法基础学习(上)
查看>>
js定义到执行(转)
查看>>
Google陆续收购技能机器人技术公司——智能机器人未来是否会发热?
查看>>
前端埋点方法解析及优缺点分析
查看>>
笔记:Gitlab-CI部署流程
查看>>
面向对象-day02
查看>>
如果要学习web前端,需要学习什么
查看>>