谭咏麟扬州演唱会:AS入门教程第9课第2节-mp3播放器[本文已收录教程库] - Flash互助课堂 - 中...
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 02:40:15
在这个播放器中,我内置了几首歌曲的连接,点击节目单会看到它们.同时提供了一个音乐地址的文本框,你可以输入任何歌曲的地址进行播放.在播放时,会有一个播放进度条,同其它的媒体播放器一样,你可以点击进度条来移动歌曲的播放点,达到快进和快退的目的.而播放控制按钮功能也同其它媒体播放器一样.播放器中设置了音量调节滑块和声道调节滑块.而闪动的光栅的高度则随音量的高低的变化而变化.
现在来制作这个播放器的.
1.首先来做一些准备工作.播放器的外观并非本教程的内容,但一些部件是必须的.
先作5个按钮:播放,暂停,停止,快进,快退,如下图:
它们的实例名称分别是:ply_btn,zd_btn,stop_btn,kj_btn,kt_btn
2.下面来制作进度条,新建一影片剪辑,画一细长矩形,新插入一层,再画一个相同长度不同颜色的矩形,并将它转换为影片剪辑元件,实例名称为:jdt_mc.回到主场景,将进度条影片剪辑放到舞台上,取实例名称为:jdk_mc.如图:
3.声道控制面板,新建一影片剪辑,按下图画出声道控制面板:
画一个小的矩形放到面板的中间刻度上,将小矩形转换为影片剪辑,或者就叫滑块吧.为它取实例名称:sdhk_mc.
回到主场景,将声道控制影片剪辑拖到舞台上,为它取实例名称:sd_mc
4.音量控制面板,新建影片剪辑,按下图画出音量控制面板:
将滑块元件(在上一步中创建的)拖到舞台上,放到音量最大处(右边),为它取实例名称:ylhk_mc
回到主场景,将音量控制影片剪辑拖到舞台上,为它取实例名称为:yl_mc
5.节目单按钮,做下面一样的影片剪辑,放在舞台上,取实例名称为:jmdbtn_mc
6.节目单,新建影片剪辑,画一矩形,在矩形上放一个文本框,输入歌曲名称,演唱者:
同样的方法创建其它的歌曲名称影片剪辑.
新建一影片剪辑,将这些歌曲名称影片剪辑,从库中拖入排好:
分别给这些歌名影片剪辑取实例名称:song1_mc,song2_mc……..song5_mc.
新建一图层,画一矩形盖住所有歌名,然后将这一层拖到最下面.这个矩形的颜色应与歌曲名称影片中的矩形颜色相同.
回到主场景,将节目单影片剪辑拖到舞台上,放到节目单按钮下面,取实例名称为:song_mc
7.光栅,新建影片剪辑,画如下图形:
放在舞台上,然后复制4个,共5个,分别取实例名称为:gb1,gb2,gb3,gb4,gb5
8.地址栏,在舞台上建一个动态文本框,取实例名称为:RUL_txt
9.再放两个动态文本,用来用数字显示进度.两个文本框的实例名称分别为:dqcd_txt,zcd_txt
10.好了,所有的东西都准备齐了,至于你想怎样将它们摆放得漂亮一些,那是你的事情了,本文不涉及到这些内容.我们要写代码了.
我们首先要获得歌曲的地址,将地址放到地址文本框中,当然,最简单的办法是,直接在地址框中输入地址.但我们内置了几首歌,这就要为这些歌名元件添加点击事件,当点击时,将歌曲地址放到地址框中.
在刚打开播放器时,我们让节目单不可见,点击节目单按钮后,才让节目单显示出来:
song_mc._yscale = 0;
这样节目单的高度为0,就不可见了.
jmdbtn_mc.onRelease = function(){
if(song_mc._yscale > 0){
song_mc._yscale = 0;
}else {
song_mc._yscale=100;
}
}
点击节目单按钮,如果节目单是打开的则关闭节目单,如果是关闭的则打开节目单.
节目单打开后,就可以点击歌曲名称将地址放到地址框中了:
song_mc.song1_mc.onRelease = function(){
RUL_txt.text ="http://www.yuelin.net/%E5%9B%BD%E5%AE%B6160.mp3";
song_mc._yscale=0;
}
song_mc.song2_mc.onRelease = function(){
RUL_txt.text ="http://lfg.ourivy.com/sjweb/enjoyment/music/tiany.mp3";
song_mc._yscale=0;
}
song_mc.song3_mc.onRelease = function(){
RUL_txt.text ="http://xuegong.zhbit.com/jx/edit/uploadfile/2008223213733227.mp3";
song_mc._yscale=0;
}
song_mc.song4_mc.onRelease = function(){
RUL_txt.text ="http://www.lygmlr.gov.cn/music/%E7%94%BB%E5%BF%83.mp3";
song_mc._yscale=0;
}
song_mc.song5_mc.onRelease = function(){
RUL_txt.text ="http://1968.wzeg.com/UploadFiles/2008-6/436743781.mp3";
song_mc._yscale=0;
}
song_mc.song6_mc.onRelease = function(){
RUL_txt.text ="http://211.155.30.36:8089/music/Audio/6.mp3";
song_mc._yscale=0;
}
地址栏中有了歌曲的地址,那么就可以点击播放按钮播放歌曲了.
首先要创建一个Sound类,用来加载mp3:
var wmp3:Sound = new Sound();
在播放前,应该将进度条设在0处:
jdk_mc.jdt_mc._xscale = 0;
将光栅的高度设为零,因为设光栅高度为零的动作要多次执行,所以将它做成一个函数,然后调用它:
function gbhl(){
for(i=1;i<6;i++){
gb_mc = eval("gb"+i);
gb_mc._yscale = 0;
}
}
gbhl();
我们还需要一些变量后面有用:
var zcd;//歌曲的总长度
var dqcd;//当前已播放的长度,用于暂停按钮和进度条
var ztd =0;//暂停点,用于暂停按钮
var jd;//进度条的位置
var rul:String;//歌曲的地址
var sdz;//声道的值
var ylz;//音量的值
这些变量现在不用管它,在后面用到它们时会给予说明的.
接下来就该写播放按钮上的代码了,有了播放按钮,就可以兴赏音乐了.
在播放时,首先应该判断当前是从头开始播放还是处于暂停状态,如果是暂停,那么我们上面声明的变量ztd就不会是0,根据这个变量是否为零就可以确定是从头开始播放还是从ztd开始播放,如果ztd为零,首先从地址栏获得歌曲地址,然后判定地址是否为空,如果不为空则将进度条归零,然后加载歌曲,并播放歌曲.调用mp3pl()函数,这个函数是在歌曲播放过程中设置一些效果比如进度条,光栅等.如果ztd不为零,则歌曲从暂停点处播放,并调用mp3pl()函数.
ply_btn.onRelease = function(){
if(ztd ==0){
rul = RUL_txt.text;
if(rul){
jdk_mc.jdt_mc._xscale = 0;
wmp3.loadSound(rul,true);
wmp3.start();
mp3pl(wmp3);
}
}else {
wmp3.start(ztd);
mp3pl(wmp3);
}
}
现在来看看mp3pl()函数,在这个函数中会用到Sound类的两个属性和一个方法,先介绍一下.
duration属性:该属性返回声音的总长度,以毫秒计算.
position属性:上一节已经介绍过,它返回声音已播放的长度,以毫秒计算.
getVolume()方法:返回声音单量的大小,数字为0-100.
在这个函数中,在onEnterFrame事件中,首先获取歌曲的总长度和当前已播放的长度,将这两个数字显示在文本框中,计算出播放进度,设置进度条的_xscale比例,显示播放进度,然后根据音量设置光栅的高度,首先将_yscale设为音量的一半,然后将另一半设为random()产生随机数,这样就产生闪动的效果.
function mp3pl(mp3){
onEnterFrame = function(){
zcd = mp3.duration/1000;
dqcd = mp3.position/1000;
zcd_txt.text = Math.floor(zcd);
dqcd_txt.text = Math.floor(dqcd);
jd = dqcd/zcd*100;
jdk_mc.jdt_mc._xscale = jd;
if(dqcd!=zcd){
for(i=1;i<6;i++){
gb_mc = eval("gb"+i);
gb_mc._yscale =mp3.getVolume()/2+ random(mp3.getVolume()/2);
}
}
}
}
现在应该基本成形了,剩下的就是几个按加上功能了.
当点击进度条时根据鼠标在进度条上的位置,确定歌曲重新从那一点上开始播放,达到快进或快退的功能.
jdk_mc.onRelease= function(){
var djd = _xmouse - jdk_mc._x;
var kjd = djd/jdk_mc._width*zcd;
wmp3.stop();
wmp3.start(kjd);
}
暂停按钮:记录当前已播放的长度,并存到ztd中,停止播放歌曲,这样当点击播放按钮时,因ztd不等于0,而使歌曲从ztd开始播放.
zd_btn.onRelease =function(){
ztd = dqcd;
wmp3.stop();
delete onEnterFrame;
gbhl();
}
停止按钮:将ztd设为0,停止播放歌曲.
stop_btn.onRelease=function(){
wmp3.stop();
ztd = 0;
delete onEnterFrame;
gbhl();
}
快进快退按钮,在当前已播放长度的基础上加上或减去5秒,重新播放歌曲
kj_btn.onRelease=function(){
wmp3.stop();
kjd = dqcd + 5;
wmp3.start(kjd);
}
kt_btn.onRelease=function(){
wmp3.stop();
ktd = dqcd - 5;
wmp3.start(ktd);
}
下面的声道控制,在Sound类,的setPan()方法可以设置声音的声道,值为0-100,0声音将完全由左声道播出,而100则完全由右声道播出.当移动声道控制上滑块,放开时根据滑块的位置设置声道的值.
sd_mc.sdhk_mc.onPress = function(){
startDrag(this,true,0,0,sd_mc._width-this._width/2,0);
}
sd_mc.sdhk_mc.onRelease = function(){
stopDrag();
sdz = (this._x)/sd_mc._width*100;
wmp3.setPan(sdz);
}
音量控制,在Sound类中可以使用setVolume()方法设置声音的音量,值为0-100,当移动音量控制上滑块,放开时根据滑块的位置设置音量的值.
yl_mc.ylhk_mc.onPress = function(){
startDrag(this,true,0,0,yl_mc._width-this._width/2,0);
}
yl_mc.ylhk_mc.onRelease = function(){
stopDrag();
ylz = (this._x)/yl_mc._width*100;
wmp3.setVolume(ylz);
}
OK,现在真正的完全完成了,静下心来兴赏音乐吧.
完整的代码:
- song_mc._yscale = 0;
- var wmp3:Sound = new Sound();
- var zcd;
- var dqcd;
- var ztd =0;
- var jd;
- var rul:String;
- var sdz;
- var ylz;
- jdk_mc.jdt_mc._xscale = 0;
- gbhl();
- ply_btn.onRelease = function(){
- if(ztd ==0){
- rul = RUL_txt.text;
- if(rul){
- jdk_mc.jdt_mc._xscale = 0;
- wmp3.loadSound(rul,true);
- wmp3.start();
- mp3pl(wmp3);
- }
- }else {
- wmp3.start(ztd);
- mp3pl(wmp3);
- }
- }
- jdk_mc.onRelease= function(){
- var djd = _xmouse - jdk_mc._x;
- var kjd = djd/jdk_mc._width*zcd;
- wmp3.stop();
- wmp3.start(kjd);
- }
- function mp3pl(mp3){
- onEnterFrame = function(){
- zcd = mp3.duration/1000;
- dqcd = mp3.position/1000;
- zcd_txt.text = Math.floor(zcd);
- dqcd_txt.text = Math.floor(dqcd);
- jd = dqcd/zcd*100;
- jdk_mc.jdt_mc._xscale = jd;
- if(dqcd!=zcd){
- for(i=1;i<6;i++){
- gb_mc = eval("gb"+i);
- gb_mc._yscale =mp3.getVolume()/2+ random(mp3.getVolume()/2);
- }
-
- }
- }
- }
- jmdbtn_mc.onRelease = function(){
- if(song_mc._yscale > 0){
- song_mc._yscale = 0;
- }else {
- song_mc._yscale=100;
- }
- }
- song_mc.song1_mc.onRelease = function(){
- RUL_txt.text ="http://www.yuelin.net/%E5%9B%BD%E5%AE%B6160.mp3";
- song_mc._yscale=0;
- }
- song_mc.song2_mc.onRelease = function(){
- RUL_txt.text ="http://lfg.ourivy.com/sjweb/enjoyment/music/tiany.mp3";
- song_mc._yscale=0;
- }
- song_mc.song3_mc.onRelease = function(){
- RUL_txt.text ="http://xuegong.zhbit.com/jx/edit/uploadfile/2008223213733227.mp3";
- song_mc._yscale=0;
- }
- song_mc.song4_mc.onRelease = function(){
- RUL_txt.text ="http://www.lygmlr.gov.cn/music/%E7%94%BB%E5%BF%83.mp3";
- song_mc._yscale=0;
- }
- song_mc.song5_mc.onRelease = function(){
- RUL_txt.text ="http://1968.wzeg.com/UploadFiles/2008-6/436743781.mp3";
- song_mc._yscale=0;
- }
- song_mc.song6_mc.onRelease = function(){
- RUL_txt.text ="http://211.155.30.36:8089/music/Audio/6.mp3";
- song_mc._yscale=0;
- }
- function gbhl(){
- for(i=1;i<6;i++){
- gb_mc = eval("gb"+i);
- gb_mc._yscale = 0;
- }
- }
- stop_btn.onRelease=function(){
- wmp3.stop();
- ztd = 0;
- delete onEnterFrame;
- gbhl();
- }
- zd_btn.onRelease =function(){
- ztd = dqcd;
- wmp3.stop();
- delete onEnterFrame;
- gbhl();
- }
- kj_btn.onRelease=function(){
- wmp3.stop();
- kjd = dqcd + 5;
- wmp3.start(kjd);
- }
- kt_btn.onRelease=function(){
- wmp3.stop();
- ktd = dqcd - 5;
- wmp3.start(ktd);
- }
- sd_mc.sdhk_mc.onPress = function(){
- startDrag(this,true,0,0,sd_mc._width-this._width/2,0);
- }
- sd_mc.sdhk_mc.onRelease = function(){
- stopDrag();
- sdz = (this._x)/sd_mc._width*100;
- wmp3.setPan(sdz);
- }
- yl_mc.ylhk_mc.onPress = function(){
- startDrag(this,true,0,0,yl_mc._width-this._width/2,0);
- }
- yl_mc.ylhk_mc.onRelease = function(){
- stopDrag();
- ylz = (this._x)/yl_mc._width*100;
- wmp3.setVolume(ylz);
- }
新概念第2册第1课
越狱第2季什么时候播放?
第一桶金什么时候播放
许国璋英语MP3为什么总不能下载第一册19课第三册第4课
世界上第一种彩屏mp3
第100个新娘 mp3
下载的《迷失》第2季播放出来看不清
新概念第一册 双课的MP3 谁有?
新版新概念英语第2册MP3哪里下载
大学英语综合教程第2册的mp3听力
谁有新概念第2册MP3格式?
小学第12册第10课
什么是热力学第1.第2定律
火影忍者第二部网上几时有得播放?
火影忍者第二部剧场版国内什么时候播放
2006优秀选第一回播放时间
快乐星球第二部在线免费播放
快乐星球第二部在线免费播放
快乐星球电视剧第二部什么时候播放?
流星花园第二部为什么不在电台播放
流星花园第二部为什么不在电台播放
快乐星球第二部的播放时间
快乐星球第3部播放
谁有标准韩国语第2册和第3册的MP3啊 谢谢了