中国设计联盟
联网
平面设计 画册 VI欣赏 包装 CG-插画 搜索 个人网页 Alexa排名 CSS 建站资源 下载专区 JS特效 品牌服装 服装院校 专题欣赏 SEO 图标欣赏 专题
域名注册 虚拟主机 广州网站设计 域名注册 广州网站建设 上海网站建设 虚拟主机 广州网页设计  虚拟主机 域名注册 acg王国 ACG玩家
求创科技
上海网站建设
中国福网
招聘求职
中国互联
中国设计秀
中资源
当前位置:网络学院首页 >> 设计教程 >> Flash >> Flash组件实现多首mp3连放

Flash组件实现多首mp3连放 (1)

来源:中国设计秀    作者:dodo    点击:253     加入收藏    发表评论
0
顶一下
关键字:组件 Flash mp3
  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();
};


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

[1] [2]
2008-01-25 09:28:38    出处:中国设计秀cnwebshow.com
网站地图 | 关于我们 | 联系我们 | 网站建设 | 广告服务 | 版权声明 | 免责声明 | 网站公告 | 友情链接 | 留言 | 旧版入口