Flash组件实现多首mp3连放

  • 来源: 中国IT实验室 作者: xuqingzhong   2008-05-28/01:59
  •  

     

    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
      myArray.push(e[i].attributes["title"]);
     }
     init();
     _root["mp3Container"+flagNum].addEventListener("complete", myListener);
    };
    var myListener = new Object();
    myListener.complete = function(eventObject) {
     playNext();
    };

    #p#分页标题#e#


    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文件上传到你的网站的同一个文件夹中。


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多