Re: [問題] 用Flash製作pause/play button的AS

看板Flash作者 (魔物を討つ者)時間13年前 (2011/11/15 18:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《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
文章代碼(AID): #1EmZY84P (Flash)
文章代碼(AID): #1EmZY84P (Flash)