最新更新 sitemap 网站制作设计本站搜索
网页设计
国外网站 韩国网站 个人主页 手提袋设计 CSS 网页特效 平面设计 网站设计 Flash CMS技巧 服装网站 php教程 photoshop 画册 服务器选用 数据库 Office
虚拟主机 域名注册 云主机 网页设计 客服QQ:8208442
当前位置:首页 > 网络设计学院 > Flash教程

flash中实现Media组件多首mp3连放

日期:12-30    来源:中国设计秀    作者:cnwebshow.com

  Flash MX 2004 的Media组件确实不错,大家在使用的时候可能发现MediaDisplay组件只能播放一首mp3,如果要让他播放完一首歌曲后再接着播放另一首歌曲就不行了。今天就来给大家介绍一下怎样用MediaController和MediaDisplay组件实现多首mp3的联播。d56中国设计秀

播放器界面如图:d56中国设计秀

d56中国设计秀

 d56中国设计秀

思路如下:d56中国设计秀

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

制作步骤:d56中国设计秀

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

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

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

function init(){d56中国设计秀
 flagNum = 1;d56中国设计秀
 //播放歌曲的标示d56中国设计秀
 mp3Num = 0;d56中国设计秀
 attachController();d56中国设计秀
};d56中国设计秀
//将MediaController和MediaDisplay组件载入舞台并初始化d56中国设计秀
function attachController(){d56中国设计秀
//将MediaDisplay组件载入舞台并给定义实例名 "mp3Container" + flagNumd56中国设计秀
  _root.attachMovie("MediaDisplay","mp3Container" + flagNum,2);d56中国设计秀
  //设置组件初始参数d56中国设计秀
  with(_root["mp3Container" + flagNum]){d56中国设计秀
   _x = 250;d56中国设计秀
   _y = 0;d56中国设计秀
   setMedia(myArray[mp3Num],"MP3");d56中国设计秀
}d56中国设计秀
//将MediaController组件载入舞台并给定义实例名 "mp3Controller" + flagNumd56中国设计秀
_root.attachMovie("MediaController","mp3Controller" + flagNum,1);d56中国设计秀
//设置组件初始参数d56中国设计秀
with(_root["mp3Controller" + flagNum]){d56中国设计秀
    _x = 0;d56中国设计秀
    _y = 0;d56中国设计秀
   activePlayControl = false;d56中国设计秀
   controllerPolicy = "on";d56中国设计秀
   //将MediaController和MediaDisplay组件相关联d56中国设计秀
   associateDisplay(_root["mp3Container" + flagNum]);d56中国设计秀
  };d56中国设计秀
};d56中国设计秀
function playNext(){d56中国设计秀
//将MediaController和MediaDisplay组件从舞台上删除d56中国设计秀
    _root["mp3Controller" + flagNum].removeMovieClip();d56中国设计秀
    _root["mp3Container" + flagNum].removeMovieClip();d56中国设计秀
    flagNum += 1;d56中国设计秀
    mp3Num += 1;d56中国设计秀
    //如果播放到歌曲的最后一首,将mp3Num = 0,意为将从头开始播放d56中国设计秀
    if(mp3Num == mp3Total) mp3Num = 0;d56中国设计秀
    //重新载入MediaController和MediaDisplay组件,并给一新的实例名d56中国设计秀
       attachController();d56中国设计秀
       //因为每播放完一首歌曲后MediaController和MediaDisplay组件从舞台上被卸载d56中国设计秀
       //然后又重新载入MediaController和MediaDisplay组件并给了另外一个实例名d56中国设计秀
       //所以要重新向注册的监听器广播事情d56中国设计秀
       _root["mp3Container" + flagNum].addEventListener("complete", myListener);d56中国设计秀
};d56中国设计秀

 d56中国设计秀

4.新建一层,命名为action,在该层第一帧输入一下AS代码:d56中国设计秀

stop();d56中国设计秀
//数组myArray用来存储 载入的XML文档中的歌曲名称d56中国设计秀
var myArray = new Array();d56中国设计秀
//歌曲的总数d56中国设计秀
var mp3Total:Number;d56中国设计秀
var myXml = new XML();d56中国设计秀
myXml.ignoreWhite = true;d56中国设计秀
myXml.load("mp3list.xml");d56中国设计秀
myXml.onLoad = function() {d56中国设计秀
 var e = myXml.firstChild.childNodes;d56中国设计秀
 mp3Total = e.length;d56中国设计秀
 for (var i = 0; i<mp3Total; i++) {d56中国设计秀
  myArray.push(e[i].attributes["title"]);d56中国设计秀
 }d56中国设计秀
 init();d56中国设计秀
 _root["mp3Container"+flagNum].addEventListener("complete", myListener);d56中国设计秀
};d56中国设计秀
var myListener = new Object();d56中国设计秀
myListener.complete = function(eventObject) {d56中国设计秀
 playNext();d56中国设计秀
};d56中国设计秀
 d56中国设计秀

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

6.创建XML文档:d56中国设计秀

<?xml version="1.0" encoding="utf-8"?>d56中国设计秀
<mp3Lists>d56中国设计秀
  <item title="1.mp3" />d56中国设计秀
  <item title="2.mp3" />d56中国设计秀
</mp3Lists>d56中国设计秀
 d56中国设计秀

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

7.在原文件目录下放入两首mp3,默认名称为1.mp3,2.mp3,