巧用Flash的Media组件实现多首mp3连播-Flash教程

来源:闪客帝国 作者:jackyshe 更新时间:2008-03-04 点击:
Flash MX 2004 的Media组件确实不错,大家在使用的时候可能发现MediaDisplay组件只能播放一首mp3,假如要让它播放完一首歌曲后再接着播放另一首歌曲就不行了。今天就来给大家介绍一下怎样用MediaController和MediaDisplay组件实现多首mp3的连播。文章末尾提供原文件供大家下载参考。

  播放器界面如图:

  思路:

  歌曲列表用一外部XML文件来记录,便于修改。开始的时候定义一XML对象,并载入外部XML文件,载入后再将歌曲列表提取出来放入一数组中。接着用attachMovie()方法将MediaController和MediaDisplay组件载入舞台,然后设置各自的参数,并将二者相关联(Media.associateController()或者Media.associateDisplay()方法都行)当一首歌曲播放完后,触发MediaDisplay的complete事件,在此事件中我将MediaController和MediaDisplay组件卸载并重新载入MediaController和MediaDisplay组件(使用attachMovie()方法)并给一新的实例名,并设置MediaDisplay组件的播放内容为下一首歌曲,如此往复来播放所有的歌曲。

  制作步骤:

  1.新建一个FLASH文档,设置舞台大小:220*70。

  2.将组件MediaController和MediaDisplay拖入舞台,然后从舞台上删除。这样做的目的是将这两个组件载入库中,为接下来用attachMovie()方法将MediaController和MediaDisplay组件载入舞台做好预备。

  3.新建一层,命名为function。在该层的第一帧上输入如下AS代码:

function init(){

flagNum = 1;

//播放歌曲的标示

mp3Num = 0;

attachController();

};

//将MediaController和MediaDisplay组件载入舞台并初始化

function attachController(){

//将MediaDisplay组件载入舞台并给定义实例名 \"mp3Container\"   flagNum

  _root.attachMovie(\"MediaDisplay\",\"mp3Container\"   flagNum,2);

  //设置组件初始参数

  with(_root[\"mp3Container\"   flagNum]){

   _x = 250;

   _y = 0;

   setMedia(myArray[mp3Num],\"MP3\");

}

//将MediaController组件载入舞台并给定义实例名 \"mp3Controller\"   flagNum

_root.attachMovie(\"MediaController\",\"mp3Controller\"   flagNum,1);

//设置组件初始参数

with(_root[\"mp3Controller\"   flagNum]){

    _x = 0;

    _y = 0;

   activePlayControl = false;

   controllerPolicy = \"on\";

   //将MediaController和MediaDisplay组件相关联

   associateDisplay(_root[\"mp3Container\"   flagNum]);

  };

};

function playNext(){

//将MediaController和MediaDisplay组件从舞台上删除

    _root[\"mp3Controller\"   flagNum].removeMovieClip();

    _root[\"mp3Container\"   flagNum].removeMovieClip();

    flagNum  = 1;

    mp3Num  = 1;

    //假如播放到歌曲的最后一首,将mp3Num = 0,意为将从头开始播放

    if(mp3Num == mp3Total) mp3Num = 0;

    //重新载入MediaController和MediaDisplay组件,并给一新的实例名

       attachController();

       //因为每播放完一首歌曲后MediaController和MediaDisplay组件从舞台上被卸载

       //然后又重新载入MediaController和MediaDisplay组件并给了另外一个实例名

       //所以要重新向注册的监听器广播事情

       _root[\"mp3Container\"   flagNum].addEventListener(\"complete\", myListener);

};



  4.新建一层,命名为action,在该层第一帧输入一下AS代码:

stop();

//数组myArray用来存储 载入的XML文档中的歌曲名称

var myArray = new Array();

//歌曲的总数

var mp3Total:Number;

var myXml = new XML();

myXml.ignoreWhite = true;

myXml.load(\"mp3list.xml\");

myXml.onLoad = function() {

var e = myXml.firstChild.childNodes;

mp3Total = e.length;

for (var i = 0; i<mp3Total; i  ) {

myArray.push(e[i].attributes[\"title\"]);

}

init();

_root[\"mp3Container\" flagNum].addEventListener(\"complete\", myListener);

};

var myListener = new Object();

myListener.complete = function(eventObject) {

playNext();

};

  5.保存文件,Ctrl Enter测试影片并输出SWF文件。测试影片时会有错误提示,不用担心,这是由于没有生成XML文档的缘故。

  6.创建XML文档:

<?xml version=\"1.0\" encoding=\"utf-8\"?>

<mp3Lists>

  <item title=\"1.mp3\" />

  <item title=\"2.mp3\" />

</mp3Lists>

  将该文件保存在与原SWF文件相同的文件夹中,命名为mp3list.xml。

  7.在原文件目录下放入两首mp3,默认名称为1.mp3,2.mp3,这里的名称和歌曲数目大家可以自己修改XML文件。

  到此为止,一个连放两首MP3的播放器就可以使用了,打开SWF文件,你将会听到美丽动听的音乐,同时看到播放进度显示等MP3播放器常有的功能。注重:要想让这个播放器用于你的网站上,必须把SWF文件和XML以及两首MP3文件上传到你的网站的同一个文件夹中。

  mp3多首连放flash源文件下载

相关Flash教程:
最新评论:
loading.. 评论加载中....
发表评论:不能超过250字节,请自觉遵守互联网相关政策法规.
  • 昵称: 验证:

最新Flash教程