网络版歌词秀——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 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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 简单使用2.0制作滚动条下一篇: Remoting中接受query类型数据方法
关于网络版歌词秀——AS制作的所有评论