花了数天时间,将flash同步歌词制作中,对歌词文件的解析方法,完整移植到网页制作中来。
为什么做这事。一是兴趣,自己出题自己做;二也为其他制作提供一些方便。
注意一下网上的网页同步歌词播放器制作,估计多为套用,因为有些错误都是一样的。这些同步歌词分为单行和双行两种,虽稍有不同,但歌词解析部分基本相同。并且常见的为单曲。
上述制作,解析歌词的思路应用的“正则表达式”,就是设置一定的条件来筛选歌词文件。“正则表达式”在所谓的代码、JS内容中,是相当大的一块,不太好啃。对高手来说,也许是很好用的东西。但对于一般水平的玩手来说,不好对付。其实说难也不算难,就是几十个符号,但得记住它们所表达的意思;这些符号放在一起,即算是比较熟悉的人,也很容易昏头的。请看看下面表示“清理无时间值的行”的表达式。
tt=tt.replace(/\[[^\[\]]*\:[^\[\]]*[^\[\]]*[^\[\]\d\.]+\]/g,"");
下面我将它改写了一下,显简单一点。
tt = tt.replace(/\[\D*\:.*\]*[^.*]/g, "");
感觉怎样?在这种情况下,想弄清作者处理歌词的思路和过程,实在不好玩。网上有人将“正则表达式”收集了一下,有点象公式,或说象字典,做什么用,就去找上那一条。实在被动。也反映了写出一个具有一定功能的表达式麻烦不少。
用flash制作同步歌词,相对来说较熟悉。它处理歌词的思路基本上用的“字符”类和循环语句,很简洁,代码看上去也明了。感觉轻松。此制作的代码中加有注释,有兴趣的话,看一下就明白了。另外,此移植制作,对歌词排版格式要求相当宽松。比如注释内容、每行多个时间值、空行等都无所谓,只管将歌词贴进去就是。别外,还备有一个变量
Zscale ,改变它的值,用来适用不同大小字体。叫人性化吧。
此帖未作装修,不好看,仅仅为了说清问题。页内备简要注释以资讨论。