常规的做法是:让背景音乐随着声音按钮的按下或课件的退出戛然而止。这样做固然干脆利落,然而也有突兀、不够专业之嫌!其实,想让背景音乐逐渐淡出是很容易实现的。
第1步
引入背景音乐,指定链接标识符
单击“文件→导入→导入到库”,然后选择事先准备好的背景音乐文件,从而将背景音乐导入到库中,再按F11键打开库,在声音组件上单击右键,选择“链接”(如图1所示),即打开“链接属性”对话框,输入一个标识符,比如“music1”,用于标识该组件,以便在场景中进入控制(如图2所示)。
第2步
创建Sound对象,绑定音乐
在第一步中,我们已往库中引入了两个背景音乐,并分别为其指定了链接标识符:“music1”和“music2”,接下来就是创建Sound对象:music1、music2。当然,也可取为其他的名字。并分别将库中的两个声音组件(music1和music2)绑定到这两个对象上。具体的做法:在场景开始的帧上输入下面的ActionScript:
//创建Sound对象:
music1 = new Sound();
music2 = new Sound();
//绑定声音组件到对象上:
music1.attachSound("music1");
music2.attachSound("music2");
第3步
创建声控mc,让音乐周而复始
按Ctrl+F8新建一个mc,只一帧,在帧上添加如下Action,检测Root.music1_ctrl.Playing和Root.music2_ctrl.Playing的可见性:如果Root.music1_ctrl.Playing可见,则说明music1音乐在播放,当其放完时,再从头开始;如果Root.music2_ctrl.Playing可见,则说明music2音乐在播放,当其放完时,再从头开始。
onEnterFrame = function () {
if (_root.music1_ctrl.Playing._visible) {
_root.music1.onSoundComplete = function() {
_root.music1.start(0);
};
} else if (_root.music2_ctrl.Playing._visible) {
_root.music2.onSoundComplete = function() {
_root.music2.start(0);
};
}
};
最后,别忘了将此mc拖到主场景中。
第4步
创建声控mc,让音乐逐渐淡出
同样,通过按Ctrl+F8新建一个mc,共三帧:
//第1帧Action:
mvol=0;
stop();
//第2帧Action:
if (_root.music1_ctrl.Playing._visible) {
mvol = _root.music1.getVolume();
} else if (_root.music2_ctrl.Playing._visible) {
mvol = _root.music2.getVolume();
}
a = setInterval(Next, 50);
function Next() {
clearInterval(a);
mvol--;
if (_root.music1_ctrl.Playing._visible) {
_root.music1.setVolume(mvol);
} else if (_root.music2_ctrl.Playing._visible) {
_root.music2.setVolume(mvol);
}
}
//
if (mvol<0) {
stopAllSounds();
fscommand("quit", "");
}
//第3帧Action:
gotoAndplay(2)
对于第1、3帧的Action就不用说了,第2帧的Action先判断_root.music1和_root.music2是不是有一个正在播放,如果是则将其音量值赋给变量mvol,然后每隔50毫秒mvol减1,直到mvol小于0时,退出课件。这样就达到了声音逐渐淡出的效果!
当然这个mc也要放到场景中去,并给它一个实例名,比如“Quit”,然后再添加一个退出按钮,加上如下Action,从而启动Quit:
on (release) {
_root.quit.play();
}
这样,在课件退出时,不管背景音乐播放到何处,都能逐渐淡出,给人一种渐渐远去的感觉。