yorhomwang 发表于 2015-4-26 19:19:41

使用lufylegend实现音乐逐渐消失效果

要实现这个效果,首先想到的就是要用LTweenLite,的确如此,不过LTweenLite只能更改属性,而LSound继承自LMedia时,没有关于音量方面的属性,继承自LWebAudio时,虽然有volume,但是设置这个属性后,不会影响播放的音量,说通俗点就是只读属性。不过别着急,lufylegend中自然有设定音量的功能,只不过是个函数,不是个属性,这个函数就是setVolume,传给函数的参数就是需要音量的值,属于。
接下来,先上代码: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,那控制台会报错的,毕竟音量的取值范围是

此方法虽然实现了这个效果,但是感觉不太优雅,所以希望lufylegend为LSound加一个函数,直接实现让音乐逐渐消失效果。
页: [1]
查看完整版本: 使用lufylegend实现音乐逐渐消失效果