”。
(2)畫一個三角形,轉(zhuǎn)換為按鈕元件,在“指針經(jīng)過”的幀上打上文字“QUIT”(即“退出”),把該按鈕放在場景中的右上角,其實例名
為“quit_btn”。
(3)畫一個矩形,再在中心畫一個停止的標(biāo)志形狀,轉(zhuǎn)換為按鈕元件,把該按鈕放在場景中的左下角,其實例名為“tz_btn”。
(4)畫一個矩形,再在中心畫一個上一首的標(biāo)志形狀,轉(zhuǎn)換為按鈕元件,把該按鈕放在場景中的左下角,前一個按鈕后,其實例名為“sys_btn”。
(5)畫一個矩形,再在中心畫一個下一首的標(biāo)志形狀,轉(zhuǎn)換為按鈕元件,把該按鈕放在場景中的左下角,前一個按鈕后,其實例名為“xys_btn”。
(6)畫一個圓形,再在中心畫一個暫停的標(biāo)志形狀,轉(zhuǎn)換為按鈕元件,把該按鈕放在場景中的中下方,其實例名為“zt_btn”。
(7)畫一個圓形,再在中心畫一個播放的標(biāo)志形狀,轉(zhuǎn)換為按鈕元件,把該按鈕放在場景中的中下方,與前一個按鈕大小坐標(biāo)相同,其實例名為“bf_btn”。
以上按鈕在場景中的分布如下圖所示:
9、新建圖層,名為“音量框”,畫一個無邊框的矩形,邊角半徑為0,寬67高6,填充顏色為#006600,X:159、Y:81。
10、新建圖層,名為“音量背景”,畫一個無邊框的矩形,邊角半徑為0,寬65高4,從上到下填充#99CC00到#55802B漸變色,X:160、Y:82。
11、新建圖層,名為“音量條”,畫一個無邊框的圓角矩形,邊角半徑為0,寬65高4,從上到下填充#00CCFF到#0066FF漸變色,坐標(biāo)X:160、Y:82。轉(zhuǎn)換為名為“音量條”的影片剪輯(注冊點在左上角)。在場景中的實例名為“ylt_mc”。
12、新建圖層,名為“音量控制”,畫一個無邊框的矩形,邊角半徑為0,寬65高4,填充顏色任意,坐標(biāo)X:160、Y:82。轉(zhuǎn)換為名為“音量控制”的按鈕元件,并將“彈起”幀上的圖形拖到“點擊”幀上。在場景中的實例名為“ylcz_btn”。
13、新建圖層,名為“歌名”,拉一個動態(tài)文本,宋體、12、黑色,在場景中的實例名為“gm_txt”。
14、創(chuàng)建兩個矩形按鈕,一個是“添加本地歌曲”,另一個是“顯示歌曲列表”,并且分別打上文字“添加本地歌曲”和“顯示歌曲列表”;新建影片剪輯,名為“cd_mc”,在該剪輯中畫一個矩形作為背景,并把剛才制作的兩個按鈕拖進來,其實例名分別為“tjgq_btn”、“lbxs_btn”;從庫中把名為“cd_mc”的影片剪輯拖入到場景合適的位置上,實例名為“cd_mc”。
15、新建圖層,名為“歌曲列表背景”,把第一層的播放器背景復(fù)制到該圖層上,并轉(zhuǎn)換為影片剪輯,在場景中的實例名為“gqlbbj_mc”;雙擊該影片剪輯,在其中新建圖層名為“收起按鈕”,畫一個三角形,轉(zhuǎn)換為按鈕元件,在“指針經(jīng)過”的幀上打上文字“RETRACT”(即“收起”),把該按鈕放在播放器背景的中底部,其實例名為“sqlb_btn”。
16、新建圖層,名為“AS”,在幀上寫如下代碼:
stage.scaleMode=StageScaleMode.NO_SCALE;
var _sound:Sound;
var _channel:SoundChannel=new SoundChannel();
var yl:Number=1;
var yinliang:SoundTransform;
var dzarr:Array=new Array();
var dizhi:URLRequest=new URLRequest();
var bxzr:Sprite=new Sprite();
addChildAt(bxzr,1);
var bx:Sprite=new Sprite();
bxzr.addChild(bx);
var _arr:ByteArray = new ByteArray();
var n:Number=0;
var loaded:int;
var total:int;
var _length:int;
var position:int;
var hcbfb:Number;
var bfjdbfb:Number;
var _playing:Boolean=true;
var _stoping:Boolean=false;
var file:FileReferenceList;
var p:uint=0;
var m2:int;
bfjdt_mc.visible=false;
gqlbbj_mc.visible=false;
cd_mc.visible=false;
var gqlb_mc:Sprite=new Sprite();
addChild(gqlb_mc);
gqlb_mc.visible=false;
//彈出菜單
cd_btn.addEventListener(MouseEvent.CLICK,xscd);
function xscd(e:MouseEvent):void {
cd_mc.visible=true;
}
//收起歌曲列表
gqlbbj_mc.sqlb_btn.addEventListener(MouseEvent.CLICK,sqlb);
function sqlb(e:MouseEvent):void {
gqlbbj_mc.visible=false;
gqlb_mc.visible=false;
}
//菜單的可見與不可見
cd_mc.addEventListener(MouseEvent.MOUSE_OVER,jgcd);
function jgcd(e:MouseEvent):void {
cd_mc.visible=true;
}
cd_mc.addEventListener(MouseEvent.MOUSE_OUT,yccd);
function yccd(e:MouseEvent):void {
cd_mc.visible=false;
}
//瀏覽文件按鈕
cd_mc.tjgq_btn.addEventListener(MouseEvent.CLICK,lldj);
function lldj(e:MouseEvent):void {
cd_mc.visible=false;
file = new FileReferenceList();
file.addEventListener(Event.SELECT,select);
file.browse([new FileFilter("mp3文件","*.mp3")]);
}
function select(e:Event):void {
zt_btn.visible=true;
bf_btn.visible=false;
removeChild(gqlb_mc);
gqlb_mc=new Sprite();
addChild(gqlb_mc);
gqlbbj_mc.visible=false;
gqlb_mc.visible=false;
p=0;
_channel.stop();
dzarr.splice(0,dzarr.length);
dzarr=new Array();
var f:FileReference;
for (var m:int = 0; m < e.target.fileList.length; m++) {
f = FileReference(e.target.fileList[m]);
dzarr.push(f.name);
}
if (dzarr.length>10) {
dzarr.splice(10);
}
dizhi=new URLRequest(dzarr[0]);
_sound=new Sound();
_sound.load(dizhi);
_channel=_sound.play();
for (m2 = 0; m2 < dzarr.length; m2++) {
var txt:TextField=new TextField();
txt.width=112;
txt.height=18;
txt.selectable=false;
gqlb_mc.addChildAt(txt,m2);
txt.x=(m2%2)*120+10;
txt.y=int(m2/2)*20+4;
txt.text=(m2+1)+"."+dzarr[m2].replace(".mp3","");
txt.addEventListener(MouseEvent.CLICK,xzgq);
txt.addEventListener(MouseEvent.MOUSE_OVER,jggqlbx);
txt.addEventListener(MouseEvent.MOUSE_OUT,ycgqlbx);
txt.name="txt"+m2;
}
//添加監(jiān)聽事件
addEventListener(Event.ENTER_FRAME,yx);
cd_mc.lbxs_btn.addEventListener(MouseEvent.CLICK,xsgqlb);
}
//不斷更新
function yx(event:Event):void {
gm_txt.text=dzarr[p].slice(0,-4);
loaded=_sound.bytesLoaded;
total=_sound.bytesTotal;
_length=_sound.length;
position=_channel.position;
if (_stoping) {
position=0;
} else {
position=_channel.position;
}
if (total > 0) {
bfjdt_mc.visible=true;
hcbfb=loaded / total;
_length/=hcbfb;
bfjdbfb=position / _length;
bfjdt_mc.scaleX=bfjdbfb;
//頻譜——跳動柱形
bx.graphics.clear();
SoundMixer.computeSpectrum(_arr,true,0);//將當(dāng)前聲音輸出為ByteArray
for (var i=0; i <200; i=i+5) {
n = _arr.readFloat()*20;//把數(shù)據(jù)流讀取成浮點數(shù)并擴大其值
bx.graphics.lineStyle(3,0xFFFFFF,0.4,true,"noSacle","none");
bx.graphics.moveTo(27+i,50);
bx.graphics.lineTo(27+i,50-n);
}
}
//音量
yl=ylt_mc.scaleX;
yinliang= _channel.soundTransform;
yinliang.volume = yl;
_channel.soundTransform. = yinliang;
//添加循環(huán)播放監(jiān)聽事件
_channel.addEventListener(Event.SOUND_COMPLETE,xhbf);
//添加與刪除下一首上一首監(jiān)聽事件
if (p==0) {
sys_btn.removeEventListener(MouseEvent.CLICK,sys);
} else {
sys_btn.addEventListener(MouseEvent.CLICK,sys);
}
if (p==dzarr.length-1) {
xys_btn.removeEventListener(MouseEvent.CLICK,xys);
} else {
xys_btn.addEventListener(MouseEvent.CLICK,xys);
}
}
//顯示歌曲列表
function xsgqlb(e:MouseEvent):void {
cd_mc.visible=false;
gqlbbj_mc.visible=true;
gqlb_mc.visible=true;
}
//鼠標(biāo)經(jīng)過歌曲列表項
function jggqlbx(e:MouseEvent):void {
e.target.textColor=0x006600;
}
//鼠標(biāo)移出歌曲列表項
function ycgqlbx(e:MouseEvent):void {
e.target.textColor=0x000000;
}
//鼠標(biāo)點擊列表項選擇歌曲
function xzgq(e:MouseEvent):void {
zt_btn.visible=true;
bf_btn.visible=false;
gqlbbj_mc.visible=false;
p=int(e.target.name.substr(3));
gqlb_mc.visible=false;
_channel.stop();
dizhi=new URLRequest(dzarr[p]);
_sound=new Sound();
_sound.load(dizhi);
_channel=_sound.play(0);
}
//播放進度控制
jdcz_btn.addEventListener(MouseEvent.CLICK,jdcz);
function jdcz(e:MouseEvent):void {
_stoping=false;
_playing=true;
zt_btn.visible=true;
bf_btn.visible=false;
_channel.stop();
bfjdbfb=(mouseX-26)/200;
position =_length*bfjdbfb;
_channel=_sound.play(position);
}
//音量大小控制
ylcz_btn.addEventListener(MouseEvent.CLICK,ylcz);
function ylcz(e:MouseEvent):void {
ylt_mc.scaleX=(mouseX-160)/65;
}
//暫停播放與停止音樂
zt_btn.visible=false;
bf_btn.visible=true;
zt_btn.addEventListener(MouseEvent.CLICK,zt);
function zt(e:MouseEvent):void {
_playing=false;
zt_btn.visible=false;
bf_btn.visible=true;
position=_channel.position;
_channel.stop();
}
bf_btn.addEventListener(MouseEvent.CLICK,bf);
function bf(e:MouseEvent):void {
_stoping=false;
_playing=true;
_channel.stop();
zt_btn.visible=true;
bf_btn.visible=false;
_channel=_sound.play(position);
}
tz_btn.addEventListener(MouseEvent.CLICK,tz);
function tz(e:MouseEvent):void {
_stoping=true;
_playing=false;
zt_btn.visible=false;
bf_btn.visible=true;
_channel.stop();
}
//上一首下一首
function sys(event:Event):void {
zt_btn.visible=true;
bf_btn.visible=false;
xys_btn.addEventListener(MouseEvent.CLICK,xys);
_channel.stop();
if (p>0) {
p--;
if (p==0) {
p=0;
sys_btn.removeEventListener(MouseEvent.CLICK,sys);
}
}
dizhi=new URLRequest(dzarr[p]);
_sound=new Sound();
_sound.load(dizhi);
_channel=_sound.play(0);
}
function xys(event:Event):void {
zt_btn.visible=true;
bf_btn.visible=false;
sys_btn.addEventListener(MouseEvent.CLICK,sys);
_channel.stop();
if (p<dzarr.length-1) {
p++;
if (p==dzarr.length-1) {
p=dzarr.length-1;
xys_btn.removeEventListener(MouseEvent.CLICK,xys);
}
}
dizhi=new URLRequest(dzarr[p]);
_sound=new Sound();
_sound.load(dizhi);
_channel=_sound.play(0);
}
//循環(huán)播放
function xhbf(event:Event):void {
p++;
if (p==dzarr.length) {
p=0;
}
dizhi=new URLRequest(dzarr[p]);
_sound=new Sound();
_sound.load(dizhi);
_channel=_sound.play(0);
}
//退出播放器
quit_btn.addEventListener(MouseEvent.CLICK,gb);
function gb(e:MouseEvent):void {
fscommand("quit");
}
17、用“FlashPacker”(下載地址:http://www.zineage.com/products/)將該發(fā)布的SWF進行打包成EXE文件(EXE文件與音樂放在一起),進行如下圖所示的有關(guān)設(shè)置:
*********初學(xué)FLASH的人,都想制作一個MP3播放器。到現(xiàn)在為止,你的夢想成真了。本教程難免有很多出入,請大家斧正!