lufy's legend
标题:
使用lufylegend实现音乐逐渐消失效果
[打印本页]
作者:
yorhomwang
时间:
2015-4-26 19:19
标题:
使用lufylegend实现音乐逐渐消失效果
要实现这个效果,首先想到的就是要用LTweenLite,的确如此,不过LTweenLite只能更改属性,而LSound继承自LMedia时,没有关于音量方面的属性,继承自LWebAudio时,虽然有volume,但是设置这个属性后,不会影响播放的音量,说通俗点就是只读属性。不过别着急,lufylegend中自然有设定音量的功能,只不过是个函数,不是个属性,这个函数就是setVolume,传给函数的参数就是需要音量的值,属于[0, 1]。
接下来,先上代码:
var fo = {
times : 1
};
LTweenLite.to(fo, 1, {
times : 0,
onUpdate : function () {
var toV = parseFloat(fo.times)
if (toV < 0) {
toV = 0;
}
sound.setVolume(toV);
},
onComplete : function () {
sound.close();
sound.setVolume(1);
}
});
复制代码
既然LTweenLite不能直接更改音量,那我们可以用一个假对象来保存音量,然后在onUpdate里调用setVolume来把音量设定为假对象保存的音量。随着假对象中的音量改变,sound的音量就会跟着改变了。如上代码所示,fo就是传说中的假对象,times就是其中保存的音量,sound就是真正的音频对象。值得注意的是,在onUpdate里,我们还需要判断假对象的音量是否低于0,如果低于0且你直接把这个值传给setVolume,那控制台会报错的,毕竟音量的取值范围是[0, 1]
此方法虽然实现了这个效果,但是感觉不太优雅,所以希望lufylegend为LSound加一个函数,直接实现让音乐逐渐消失效果。
欢迎光临 lufy's legend (http://lufylegend.com/forum/)
Powered by Discuz! X2.5