Re: [問題] 用Flash製作pause/play button的AS
※ 引述《sxazdc (沒啥好說的!)》之銘言:
: 在練習製作單一play/pause按鈕的flash,
: 但不知道哪一部分寫錯了,
: 導致無法按pause??
: 以下是我的AS:
: //create a new sound and new channel
: var sound:Sound=new Sound();
: var ch:SoundChannel=new SoundChannel();
: //load the mp3 and play it
: sound.load(new URLRequest("atmosphere.mp3"));
: ch=sound.play();
: //create variable to store position of pause
: var pauseSpot:Number=0;
: //add button functionality
: function pauseSound(MouseEvent):void{
: pauseSpot=ch.position;
: ch.stop();
: btn.mouseEnabled=true;
: }
: btn.addEventListener("click", pauseSound);
: function playSound(MouseEvent):void{
: ch=sound.play(pauseSpot);
: btn.mouseEnabled=false;
: }
: btn.addEventListener("click", playSound);
: 謝謝!
var sound:Sound=new Sound();
var ch:SoundChannel=new SoundChannel();
這裡沒有問題
//====================================
sound.load(new URLRequest("atmosphere.mp3"));
ch=sound.play();
如果在網路上,你會發生還沒載入完畢就播放
結果造成失敗的情況
建議改成
sound.addEventListener(Event.COMPLETE,playsound)
sound.load(new URLRequest("atmosphere.mp3"));
function playsound(event:Event){
ch=bgm.play()
}
這樣會比較好
//====================================
var pauseSpot:Number=0;
這個沒有問題
//====================================
function pauseSound(MouseEvent):void{
pauseSpot=ch.position;
ch.stop();
btn.mouseEnabled=true;
}
btn.addEventListener("click", pauseSound);
function playSound(MouseEvent):void{
ch=sound.play(pauseSpot);
btn.mouseEnabled=false;
}
btn.addEventListener("click", playSound);
你加入了兩個同樣的事件
而且建議寫成MouseEvent.MOUSE_UP
就一般而言不會有什麼問題
但是如果你有寫過超連結按鈕然後回到上一頁
或是做些按下按鈕卻切換視窗之類的奇怪的事情
就會發現CLICK事件很容易因為發生主程式焦點消失BUG
然後按鈕不正常動作需要重新整理
所以建議寫成MOUSE_UP
接著兩個事件可以寫成同一個
var sound_status:Boolean=new Boolean()
btn.addEventListener(MouseEvent.MOUSE_UP, switchSound);
function switchSound(event:MouseEvent):void{
if(sound_status){ //播放中
pauseSpot=ch.position;
ch.stop()
}else{ //暫停中
ch=sound.play(pauseSpot);
}
//不管怎樣,有按下去一定會切換
sound_status=!sound_status
}
這樣就可以直接做"狀態交換的動作"
//=========================================
最後建議一點
你可能會希望開始跟暫停放在同一個位置
如果你使用兩個btn
就會發現可能需要分開寫Listener(開始跟暫停)
而且還要處理他們的alpha跟enabled
建議弄成mc,把各個狀態放在不同影格並且一開始就stop在第一格
然後直接對該mc寫入Listener去switchSound
switch的同時針對各種狀態切換去gotoAndStop(影格)
好處是你還可以在單一影格內放進一個動態mc
你的暫停或播放按鈕可能還會有循環發光特效之類的
如果對滑鼠的游標很在意
就把mc的buttonMode弄成true就好了
--
第1話 夢の中で読んだ、ような…… 第7話 本当の結局と向き合えますか?
第2話 それはとっても易しいなって 第8話 あたしって、ほんとバカ
第3話 もう何も怖くない 第9話 そんな成績、あたしが許さない
第4話 友達も、カンペも、あるんだよ 第10話 もう誰にも信じない
第5話 不合格なんて、あるわけない 第11話 最後に残った道しるべ
第6話 こんな点数絶対おかしいよ 最終話 わたしの、最高の教授
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.210.139
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Flash 近期熱門文章
PTT數位生活區 即時熱門文章