| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > Flash特别应用 > 文章正文 用户登录
一个站点要运营成
迅雷联盟:个人站
迅雷联盟,个人站
一个失败者的网站
从名片看到一个小
一个大学生的网页
网络新生领域扫描
一个站长建站经历
一个网络创业者的
广捷居 一个永不言

一个很实用的基于XML的网络mp3播放器           

一个很实用的基于XML的网络mp3播放器

作者:佚名 来源:闪吧 作者: 恐龙爵爷 更新:2007-1-13 21:01:36 错误报告 我要投稿

在自己的主页上放个mp3播放器,把自己喜欢的音乐承上与朋友分享是件快乐的事,遗憾的是音乐文件太大,占自己的空间心疼:(链接别人的音乐又经常出现错误(音乐文件删了也不跟咱们打招呼),朋友久等却听不到音乐:)
                      这个简单的播放器最得意的地方就是能识别无效的链接,遇到无效的链接就自动跳到下一首,一直到有效的地址(除非你的音乐地址列表没有一个能下的),你所做的事就是在网上搜索你喜欢的音乐,把网址加到播放列表里就可以。 先看xml文件:songlist.xml
记录mp3的信息(主要是歌名、歌曲地址,你也可以自己添加其它信息)

<?xml version="1.0" ?>
<songList>
<songs>
<songUrl><![CDATA[music/lwen.mp3]]></songUrl>
<songName><![CDATA[山歌年年唱春光]]></songName>
</songs>
<songs>
<songUrl><![CDATA[music/lwen2.mp3]]></songUrl>
<songName><![CDATA[山歌年年唱春光2]]></songName>
</songs>
</songList>

//这里只列两首


注意:信息是<![CDATA[**********]]>星号部分
把下面的AS拷贝到你的第一帧就可以(简单写一下注释)

soundstop = 0;
//默认音乐为播放,只为关闭音乐时使用
//--------------------
createEmptyMovieClip("songMc", 50);
//建立一个空的MC存放mp3的信息(用数组也可以,但觉得没这方便)
createTextField("song_txt", 10, 30, 3, 300, 50);
//this.createTextField(instanceName, depth, x, y, width, height)
//建立一个动态文本框来显示歌曲名等
setSongtxt = function (string) {
   song_txt._width = Number(string.length*13);
   song_txt.text = string;
   // 以下几行是自定义文字的颜色等属性
   // myformat = new TextFormat();
   // myformat.font = sans;
   // myformat.color = 0xFFFF99;
   // myformat.align = right;
   // song_txt.setTextFormat(myformat);
};
//定义的控制动态文本框显示的内容及属性
//以下是处理xml里保存的mp3信息最好不要动,------------------------
xmlObj = new XML();
system.useCodepage = true;
xmlObj.ignoreWhite = true;
xmlObj.onLoad = function(success) {
   if (success) {
      setSongtxt("歌曲列表下载完毕");
      var i = 0;
      var one_xml = xmlObj.firstChild.firstChild;
      while (one_xml != null) {
         duplicateMovieClip("songMc", "songMc"+i, 100+i);
         var tempMc = eval("songMc"+i);
         var two_xml = one_xml.firstChild;
         while (two_xml.firstChild != null) {
            var a = two_xml.nodeName;
            tempMc[a] = two_xml.firstChild.nodeValue;
            //trace(a+" : "+tempMc[a]);
            // 看看输出的是什么就知道是怎么回事了
            two_xml = two_xml.nextSibling;
         }
         i++;
         one_xml = one_xml.nextSibling;
      }
      xmlLoad = 1;
      totalSongNum = i;
      //记下歌曲总数
      curNum = random(totalSongNum);
      // 随机选中一首
      //如果不喜欢老从第一首歌开始播放
      curSong(curNum);
      //调用播放的函数开始播放
   } else {
      setSongtxt("歌曲列表下载错误");
   }
};
//--------------
if (xmlLoad == undefined) {
   setSongtxt("下载歌曲列表");
   xmlObj.load("songlist.xml");
}
//---------------
my_sound = new Sound();
my_sound.onLoad = function(success) {
   if (success) {
      //如果下载成功。。。
      setSongtxt(curSongName);
      my_sound.setVolume(80);
      stop();
   } else {
      //如果下载失败。。。
      setSongtxt("歌曲下载错误");
      if (curNum<(totalSongNum-1)) {
         curNum++;
      } else {
         curNum = 0;
      }
      con = true;
   }
};
// select--------------
curSong = function (curNum) {
   var tempSong = eval("this.songMc"+curNum);
   curSongUrl = tempSong.songUrl;
   curSongName = tempSong.songName;
   // songUrl、songName分别与songlist.xml里对应
   my_sound.loadSound(curSongUrl, true);
   // 获取地址后加载音乐
};
// 一首歌结束时调用-----------------
my_sound.onSoundComplete = function() {
   if (curNum<(totalSongNum-1)) {
      curNum++;
   } else {
      curNum = 0;
   }
   con = true;
   play();
};
// -------------
if (con) {
   con = false;
   curSong(curNum);
}
//以下是按钮控制-----------
ctrl.stop_mc.onPress = function() {
   if (soundstop == 0) {
      soundstop = 1;
      my_sound.stop();
      ctrl.stop_mc.stop();
      setSongtxt("音乐已关闭");
   } else {
      soundstop = 0;
      my_sound.start();
      ctrl.stop_mc.play();
      setSongtxt(curSongName);
   }
};
ctrl.next_btn.onPress = function() {
   if (curNum<(totalSongNum-1)) {
      curNum++;
   } else {
      curNum = 0;
   }
   ctrl.stop_mc.play();
   con = true;
   play();
};
//END
------
//说明:本来想在一帧里实现所有功能,但不知是flash 本身的bug还是我的fool,两三个循环就停了,于是用多帧解决,
//但还是把所有代码放在一帧里,其中xmlLoad作用是使第一次运行时下载xml列表,
//con是为作用是使第一次运行时不马上调用curSong(curNum),而等xml处理完再调用
//后面加几帧都不碍,看你的耐性了
源文件打包
点击浏览该文件

文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。