作者KawasumiMai (魔物を讨つ者)
看板Flash
标题Re: [问题] 用Flash制作pause/play button的AS
时间Tue Nov 15 18:01:41 2011
※ 引述《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