flash播放器的as
System.useCodepage = true; //避免亂碼
var lrcData:Array = new Array();// 定義一個(gè)存放歌詞元素的數組
var music_xml:XML=new XML(); //定義xml對象
var music:Array=new Array(); //定義一個(gè)數組對象,實(shí)質(zhì)上是一個(gè)對象數組,就是說(shuō)它的每 個(gè)數組元素都是一個(gè)對象
var count:Number=0;
music_xml.ignoreWhite=true;//忽略空白
music_xml.onLoad=function(success){
if(success){
parse(); //parse()是一個(gè)自定義函數,在加載成功時(shí)調用
}
}
music_xml.load("music.xml"); //加載xml文件,onLoad事件最好寫(xiě)在load的前面
//parse()
function parse(){
var e=music_xml.firstChild.childNodes;
count=e.length;
for(var i=0;i<count;i++){
var musicobject=new Object();
musicobject.url=e[i].attributes.url;
musicobject.name=e[i].attributes.name;
musicobject.soundtxt=e[i].attributes.soundtxt;
music[i]=musicobject;
}
soundid(music[0].url,music[0].name);
loadLyrics(music[0].soundtxt);//加載歌詞
}
//
var soundbool=false;
var mid:Number=1;
var soundposition=0;
var mysound:Sound=new Sound(); //定義sound對象
function soundid(url,name ,soundtxt){
mysound.loadSound(url,true);//自定義函數soundid,接收兩個(gè)參數
this.onEnterFrame=function(){
if(mysound.getBytesLoaded()>=mysound.getBytesTotal()){
name_txt.text=name;
count_txt.text=mid+"/"+count;
mysound.start();
delete this.onEnterFrame;
}else{
name_txt.text="loading...";
}
}
}
//顯示歌詞區域=====================
createTextField("txtlyric", this.getNextHighestDepth,70, 100, "250", "90");//創(chuàng )建一個(gè)動(dòng)態(tài)文本框
txtlyric.html = true;
txtlyric.multiline = true;
txtlyric.wordWrap = false;
txtlyric.border = true;
txtlyric.selectable = false;
function loadLyrics(lyrics) {
var lrc:XML = new XML();
lrc.load(lyrics);
lrc.onLoad = function(success) {
if (success) {
originLyrics = new Array();
originLyricsBreak = new Array();
var originLyricsUnit = new Array();
//刪除回車(chē)和換行,并把每行歌詞儲存到數組originLyrics中
originLyrics = lrc.toString().split("\r\n");
//去除空白行
for (var i in originLyrics) {
if (originLyrics[i] == "") {
originLyrics.splice(i, 1);//刪除空行
}
}
//——————解壓歌詞
for (var i in originLyrics) { //下面的if判斷就是去掉類(lèi)似[ti:醉清風(fēng)]這樣的信息
if (isNaN(originLyrics[i].substr(1, 2)) == false) {
originLyricsUnit = originLyrics[i].split("]");//用一個(gè)臨時(shí)的數組儲存解壓之后單行歌詞拆分而成的時(shí)間和內容
for (var j = 0; j<originLyricsUnit.length-1; j++) {//將重復的歌詞拆分為獨立歌詞
originLyricsBreak.unshift(originLyricsUnit[j]+"]"+originLyricsUnit[originLyricsUnit.length-1]);
}
}
}
delete originLyrics;
originLyricsBreak.sort();//按時(shí)間先后排序:
//把歌詞與時(shí)間分開(kāi)
for (var i = 0; i<originLyricsBreak.length; i++) {
tempText = originLyricsBreak[i].split("]")[1];
var tempTimeString = originLyricsBreak[i].split("]")[0].slice(1);
lrcData.push({index:i, lrctime:convertToTime(tempTimeString), lrctext:tempText});
}
delete originLyricsBreak;
startShowLRC();
} else {
txtlyric.htmlText = "error";
}
};
}
//時(shí)間元素處理函數,將歌詞中的時(shí)間轉換成數字
function convertToTime(str) {
var times = str.split(":");
return parseInt(times[0])*60+parseFloat(times[1]);
}
//定義顯示歌詞的函數,此函數在音樂(lè )播放的時(shí)候被調用
function startShowLRC() {
t = 0;
n = 0;
txtlyric.htmlText = "";
mc3.onEnterFrame = checTimer;
showLRCInfo(0);
}
//檢查時(shí)間
function checTimer() {
if (mysound.position>=lrcData[t].lrctime*1000) {
if (t<lrcData.length-1) {
if (mysound.position<lrcData[t+1].lrctime*1000) {
if (n != t) {
n = t;
showLRCInfo(t);
}
} else {
t++;
}
} else {
if (t != n) {
n = t;
showLRCInfo(t);
}
}
}
}
fontColor1 = new String("1C6440");
fontColor2 = new String("05D859");
lrcFormat = new TextFormat();
lrcFormat.align = "center";
frontInfo = new String();
backInfo = new String();
//顯示歌詞
function showLRCInfo(id) {
frontInfo = "";
backInfo = "";
for (var j = 0; j<id; j++) {
frontInfo += lrcData[j].lrctext+"<br>";
}
for (var j = id+1; j<lrcData.length; j++) {
backInfo += lrcData[j].lrctext+"<br>";
}
txtlyric.htmlText = "<font color=\"#"+fontColor1+"\">"+frontInfo+"</font>"+"<font color=\"#"+fontColor2+"\">"+lrcData[id].lrctext+"</font><br>"+"<font color=\"#"+fontColor1+"\">"+backInfo+"</font>";
txtlyric.setTextFormat(lrcFormat);
txtlyric.scroll = id-1;
}
//按扭操作區域
play_btn.onRelease=function(){
if(soundbool==false){
soundid(music[mid-1].url,music[mid-1].name);
loadLyrics(music[mid-1].soundtxt);
}else if(soundbool==true){
mysound.start(soundposition);
name_txt.text=music[mid-1].name;
}
}
stop_btn.onRelease=function(){
soundposition=0;
mysound.stop();
name_txt.text="停止";
}
next_btn.onRelease=function(){
if(mid==count) mid=1;
else mid++;
soundid(music[mid-1].url,music[mid-1].name);
loadLyrics(music[mid-1].soundtxt);
}
after_btn.onRelease=function(){
if(mid==1) mid=count;
else mid--;
soundid(music[mid-1].url,music[mid-1].name);
loadLyrics(music[mid-1].soundtxt);
}
pause_btn.onRelease=function(){
soundposition=mysound.position/1000;
mysound.stop();
name_txt.text="暫停";
soundbool=true;
}
//播放進(jìn)度顯示區域
mc2.onEnterFrame=function(){
//position聲音已播放的毫秒數。如果該聲音循環(huán)播放,則在每次循環(huán)開(kāi)始時(shí),將 position 重置為 0。
//duration聲音的持續時(shí)間
var f=(mysound.position/mysound.duration)*100;
if(isNaN(f)==false){
//如果值為 NaN(非數字),則返回 true。此函數可用于檢查一個(gè)數學(xué)表達式是否成功地計算為一個(gè)數字
process_mc.proc_mc._xscale=f;
}
}
//播放時(shí)間顯示時(shí)區域
var time1:Number=0;
var time2:Number=0;
var time3:Number=0;
var time4:Number=0;
mc1.onEnterFrame = function () {
time1 = int(mysound.position / 60000) < 10 ? "0" + int(mysound.position / 60000) : int(mysound.position / 60000);
time2 = int(mysound.position / 1000 % 60) < 10 ? "0" + int(mysound.position / 1000 % 60) : int(mysound.position / 1000 % 60);
time3 = int(mysound.duration / 60000) < 10 ? "0" + int(mysound.duration / 60000) : int(mysound.duration / 60000);
time4 = int(mysound.duration / 1000 % 60) < 10 ? "0" + int(mysound.duration / 1000 % 60) : int(mysound.duration / 1000 % 60);
time_txt.text = time1 + ":" + time2 + " - " + time3 + ":" + time4;
};
var lrcData:Array = new Array();// 定義一個(gè)存放歌詞元素的數組
var music_xml:XML=new XML(); //定義xml對象
var music:Array=new Array(); //定義一個(gè)數組對象,實(shí)質(zhì)上是一個(gè)對象數組,就是說(shuō)它的每 個(gè)數組元素都是一個(gè)對象
var count:Number=0;
music_xml.ignoreWhite=true;//忽略空白
music_xml.onLoad=function(success){
if(success){
parse(); //parse()是一個(gè)自定義函數,在加載成功時(shí)調用
}
}
music_xml.load("music.xml"); //加載xml文件,onLoad事件最好寫(xiě)在load的前面
//parse()
function parse(){
var e=music_xml.firstChild.childNodes;
count=e.length;
for(var i=0;i<count;i++){
var musicobject=new Object();
musicobject.url=e[i].attributes.url;
musicobject.name=e[i].attributes.name;
musicobject.soundtxt=e[i].attributes.soundtxt;
music[i]=musicobject;
}
soundid(music[0].url,music[0].name);
loadLyrics(music[0].soundtxt);//加載歌詞
}
//
var soundbool=false;
var mid:Number=1;
var soundposition=0;
var mysound:Sound=new Sound(); //定義sound對象
function soundid(url,name ,soundtxt){
mysound.loadSound(url,true);//自定義函數soundid,接收兩個(gè)參數
this.onEnterFrame=function(){
if(mysound.getBytesLoaded()>=mysound.getBytesTotal()){
name_txt.text=name;
count_txt.text=mid+"/"+count;
mysound.start();
delete this.onEnterFrame;
}else{
name_txt.text="loading...";
}
}
}
//顯示歌詞區域=====================
createTextField("txtlyric", this.getNextHighestDepth,70, 100, "250", "90");//創(chuàng )建一個(gè)動(dòng)態(tài)文本框
txtlyric.html = true;
txtlyric.multiline = true;
txtlyric.wordWrap = false;
txtlyric.border = true;
txtlyric.selectable = false;
function loadLyrics(lyrics) {
var lrc:XML = new XML();
lrc.load(lyrics);
lrc.onLoad = function(success) {
if (success) {
originLyrics = new Array();
originLyricsBreak = new Array();
var originLyricsUnit = new Array();
//刪除回車(chē)和換行,并把每行歌詞儲存到數組originLyrics中
originLyrics = lrc.toString().split("\r\n");
//去除空白行
for (var i in originLyrics) {
if (originLyrics[i] == "") {
originLyrics.splice(i, 1);//刪除空行
}
}
//——————解壓歌詞
for (var i in originLyrics) { //下面的if判斷就是去掉類(lèi)似[ti:醉清風(fēng)]這樣的信息
if (isNaN(originLyrics[i].substr(1, 2)) == false) {
originLyricsUnit = originLyrics[i].split("]");//用一個(gè)臨時(shí)的數組儲存解壓之后單行歌詞拆分而成的時(shí)間和內容
for (var j = 0; j<originLyricsUnit.length-1; j++) {//將重復的歌詞拆分為獨立歌詞
originLyricsBreak.unshift(originLyricsUnit[j]+"]"+originLyricsUnit[originLyricsUnit.length-1]);
}
}
}
delete originLyrics;
originLyricsBreak.sort();//按時(shí)間先后排序:
//把歌詞與時(shí)間分開(kāi)
for (var i = 0; i<originLyricsBreak.length; i++) {
tempText = originLyricsBreak[i].split("]")[1];
var tempTimeString = originLyricsBreak[i].split("]")[0].slice(1);
lrcData.push({index:i, lrctime:convertToTime(tempTimeString), lrctext:tempText});
}
delete originLyricsBreak;
startShowLRC();
} else {
txtlyric.htmlText = "error";
}
};
}
//時(shí)間元素處理函數,將歌詞中的時(shí)間轉換成數字
function convertToTime(str) {
var times = str.split(":");
return parseInt(times[0])*60+parseFloat(times[1]);
}
//定義顯示歌詞的函數,此函數在音樂(lè )播放的時(shí)候被調用
function startShowLRC() {
t = 0;
n = 0;
txtlyric.htmlText = "";
mc3.onEnterFrame = checTimer;
showLRCInfo(0);
}
//檢查時(shí)間
function checTimer() {
if (mysound.position>=lrcData[t].lrctime*1000) {
if (t<lrcData.length-1) {
if (mysound.position<lrcData[t+1].lrctime*1000) {
if (n != t) {
n = t;
showLRCInfo(t);
}
} else {
t++;
}
} else {
if (t != n) {
n = t;
showLRCInfo(t);
}
}
}
}
fontColor1 = new String("1C6440");
fontColor2 = new String("05D859");
lrcFormat = new TextFormat();
lrcFormat.align = "center";
frontInfo = new String();
backInfo = new String();
//顯示歌詞
function showLRCInfo(id) {
frontInfo = "";
backInfo = "";
for (var j = 0; j<id; j++) {
frontInfo += lrcData[j].lrctext+"<br>";
}
for (var j = id+1; j<lrcData.length; j++) {
backInfo += lrcData[j].lrctext+"<br>";
}
txtlyric.htmlText = "<font color=\"#"+fontColor1+"\">"+frontInfo+"</font>"+"<font color=\"#"+fontColor2+"\">"+lrcData[id].lrctext+"</font><br>"+"<font color=\"#"+fontColor1+"\">"+backInfo+"</font>";
txtlyric.setTextFormat(lrcFormat);
txtlyric.scroll = id-1;
}
//按扭操作區域
play_btn.onRelease=function(){
if(soundbool==false){
soundid(music[mid-1].url,music[mid-1].name);
loadLyrics(music[mid-1].soundtxt);
}else if(soundbool==true){
mysound.start(soundposition);
name_txt.text=music[mid-1].name;
}
}
stop_btn.onRelease=function(){
soundposition=0;
mysound.stop();
name_txt.text="停止";
}
next_btn.onRelease=function(){
if(mid==count) mid=1;
else mid++;
soundid(music[mid-1].url,music[mid-1].name);
loadLyrics(music[mid-1].soundtxt);
}
after_btn.onRelease=function(){
if(mid==1) mid=count;
else mid--;
soundid(music[mid-1].url,music[mid-1].name);
loadLyrics(music[mid-1].soundtxt);
}
pause_btn.onRelease=function(){
soundposition=mysound.position/1000;
mysound.stop();
name_txt.text="暫停";
soundbool=true;
}
//播放進(jìn)度顯示區域
mc2.onEnterFrame=function(){
//position聲音已播放的毫秒數。如果該聲音循環(huán)播放,則在每次循環(huán)開(kāi)始時(shí),將 position 重置為 0。
//duration聲音的持續時(shí)間
var f=(mysound.position/mysound.duration)*100;
if(isNaN(f)==false){
//如果值為 NaN(非數字),則返回 true。此函數可用于檢查一個(gè)數學(xué)表達式是否成功地計算為一個(gè)數字
process_mc.proc_mc._xscale=f;
}
}
//播放時(shí)間顯示時(shí)區域
var time1:Number=0;
var time2:Number=0;
var time3:Number=0;
var time4:Number=0;
mc1.onEnterFrame = function () {
time1 = int(mysound.position / 60000) < 10 ? "0" + int(mysound.position / 60000) : int(mysound.position / 60000);
time2 = int(mysound.position / 1000 % 60) < 10 ? "0" + int(mysound.position / 1000 % 60) : int(mysound.position / 1000 % 60);
time3 = int(mysound.duration / 60000) < 10 ? "0" + int(mysound.duration / 60000) : int(mysound.duration / 60000);
time4 = int(mysound.duration / 1000 % 60) < 10 ? "0" + int(mysound.duration / 1000 % 60) : int(mysound.duration / 1000 % 60);
time_txt.text = time1 + ":" + time2 + " - " + time3 + ":" + time4;
};

