快速业务通道

网络版歌词秀——AS制作

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-12


说明:这个歌词秀既可演示字幕,又可编辑歌词
当左上角显示为演示状态时,点击“播放”即可演示字幕
当显示为编辑状态时,点击“记时”既可为歌词添加时间标签
时间标签中包含每个句子的起始时间和结束时间,均用60进制表示,
最末位的单位是60分之一秒

演示地址:
http://www.5dblog.com/user2/jh7086/index.ASP?id=40562
这个也是:http://www.5dblog.com/user2/jh7086/index.asp?id=40820
还有这个:http://www.5dblog.com/user2/jh7086/?id=38245
作了些改进(下面的代码已更新),消除了一些BUG,杂乱的代码也整理了一下
更重要的是,现在只要建立一个与swf同名的txt文件并放在同一目录下,
即可通过更改txt的内容来加载不同的歌词和mp3,而不必再修改源文件了

--------------------完全AS实现-------------------------------

System.useCodepage = true;
//加载外部文本文件(文件路径,目标地址[,变量名称[,加载完毕后执行的函数]])
function loadTXT(url:String, temp:Object, func:Function) {
var depth = this.getNextHighestDepth();
var mc = this.createEmptyMovieClip("MC"+depth, depth);
var tt = setInterval(test, 50);
loadVariables(url, mc);
function test() {
if (mc.txtend != undefined) {
temp.data = mc.jhdata;
if (func != null) {
func();
}
removeMovieClip(mc);
clearInterval(tt);
}
}
}
//将10进制数N转换成d进制数(以0-9,A-Z,a-z字符表示),d为2-62
function jh_10toD(N:Number, d:Number) {
N = Math.floor(N);
d = d<2 ? 2 : d>62 ? 62 : d;
var s, e = "";
while (N>0) {
s = N%d;
if (s>35) {
//36至62的数用a-z字符表示(s-36+97)
s = String.fromCharCode(s+61);
} else if (s>9) {
//10至35的数用A-Z字符表示(s-10+65)
s = String.fromCharCode(s+55);
}
e = s+e;
N = Math.floor(N/d);
}
e = e != "" ? e : "0";
return e;
}
//将d进制数str转换为10进制
function jh_Dto10(str:String, d:Number) {
var code = 0, num = 0;
for (var i = 0; i code = str.charCodeAt(i);
if (code>96) {
code -= 61;
} else if (code>64) {
code -= 55;
} else {
code -= 48;
}
num += code*Math.pow(d, str.length-1-i);
}
return num;
}
//建立文本按钮(按钮字符,函数名,坐标,mc)
function get_button(BTtext:String, func:String, x:Number, y:Number, mc:MovieClip) {
mc = mc != null ? mc : this;
var depth = mc.getNextHighestDepth();
mc.createTextField("BT"+depth, depth, x, y, 15*BTtext.length, 20);
with (eval("BT"+depth)) {
selectable = false;
HTML = true;
htmlText = ""+BTtext+"";
}
}
//歌词处理:提取出每行的时间(换算为毫秒数)和歌词,存入数组(演示字幕用)
//如果没有时间信息,按同样格式转换,stime和etime置为""
function toarray(geci) {
geci = geci.split("\r\n");
for (var i in geci) {
var temp = geci[i];
var index1 = temp.indexOf(",");
var index2 = temp.indexOf("]");
geci[i] = {};
if (index2 == -1) {
if (temp == "" || temp == " ") {
geci.splice(i, 1);
} else {
geci[i].stime = "";
geci[i].etime = "";
geci[i].txt = temp;
}
} else {
geci[i].stime = 100/6*jh_Dto10(temp.slice(1, index1), 60);
geci[i].etime = 100/6*jh_Dto10(temp.slice(index1+1, index2), 60);
geci[i].txt = temp.slice(index2+1);
}
}
retu

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号