flash播放器的as

来源:百度文库 编辑:神马文学网 时间:2024/04/23 20:28:29

flash播放器的as

System.useCodepage = true; //避免乱码
var lrcData:Array = new Array();// 定义一个存放歌词元素的数组
var music_xml:XML=new XML(); //定义xml对象
var music:Array=new Array(); //定义一个数组对象,实质上是一个对象数组,就是说它的每 个数组元素都是一个对象
var count:Number=0;
music_xml.ignoreWhite=true;//忽略空白
music_xml.onLoad=function(success){
if(success){
   parse(); //parse()是一个自定义函数,在加载成功时调用
}
}
music_xml.load("music.xml"); //加载xml文件,onLoad事件最好写在load的前面
//parse()
function parse(){
var e=music_xml.firstChild.childNodes;
count=e.length;
for(var i=0;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,接收两个参数
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");//创建一个动态文本框
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();
            //删除回车和换行,并把每行歌词储存到数组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判断就是去掉类似[ti:醉清风]这样的信息
                if (isNaN(originLyrics[i].substr(1, 2)) == false) {
                    originLyricsUnit = originLyrics[i].split("]");//用一个临时的数组储存解压之后单行歌词拆分而成的时间和内容
                    for (var j = 0; j                        originLyricsBreak.unshift(originLyricsUnit[j]+"]"+originLyricsUnit[originLyricsUnit.length-1]);
                    }
                }
            }
            delete originLyrics;
            originLyricsBreak.sort();//按时间先后排序:
            //把歌词与时间分开
            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";
        }
    };
}
//时间元素处理函数,将歌词中的时间转换成数字
function convertToTime(str) {
    var times = str.split(":");
    return parseInt(times[0])*60+parseFloat(times[1]);
}
//定义显示歌词的函数,此函数在音乐播放的时候被调用
function startShowLRC() {
    t = 0;
    n = 0;
    txtlyric.htmlText = "";
mc3.onEnterFrame = checTimer;
    showLRCInfo(0);
}
//检查时间
function checTimer() {
    if (mysound.position>=lrcData[t].lrctime*1000) {
        if (t            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        backInfo += lrcData[j].lrctext+"<br>";
    }
    txtlyric.htmlText = ""+frontInfo+""+""+lrcData[id].lrctext+"
"+""+backInfo+"";
    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;
}
//播放进度显示区域
mc2.onEnterFrame=function(){
//position声音已播放的毫秒数。如果该声音循环播放,则在每次循环开始时,将 position 重置为 0。
//duration声音的持续时间
var f=(mysound.position/mysound.duration)*100;
if(isNaN(f)==false){
//如果值为 NaN(非数字),则返回 true。此函数可用于检查一个数学表达式是否成功地计算为一个数字
     process_mc.proc_mc._xscale=f;
}
}
//播放时间显示时区域
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;
};