lufy's legend

标题: 使用lufylegend实现音乐逐渐消失效果 [打印本页]

作者: yorhomwang    时间: 2015-4-26 19:19
标题: 使用lufylegend实现音乐逐渐消失效果
要实现这个效果,首先想到的就是要用LTweenLite,的确如此,不过LTweenLite只能更改属性,而LSound继承自LMedia时,没有关于音量方面的属性,继承自LWebAudio时,虽然有volume,但是设置这个属性后,不会影响播放的音量,说通俗点就是只读属性。不过别着急,lufylegend中自然有设定音量的功能,只不过是个函数,不是个属性,这个函数就是setVolume,传给函数的参数就是需要音量的值,属于[0, 1]。
接下来,先上代码:
  1. var fo = {
  2.         times : 1
  3. };

  4. LTweenLite.to(fo, 1, {
  5.         times : 0,
  6.         onUpdate : function () {
  7.                 var toV = parseFloat(fo.times)

  8.                 if (toV < 0) {
  9.                         toV = 0;
  10.                 }

  11.                 sound.setVolume(toV);
  12.         },
  13.         onComplete : function () {
  14.                 sound.close();
  15.                 sound.setVolume(1);
  16.         }
  17. });       
复制代码
既然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