lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5845|回复: 0
打印 上一主题 下一主题

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

[复制链接]

46

主题

3

好友

1866

积分

偏将军

Rank: 4

跳转到指定楼层
楼主
发表于 2015-4-26 19:19:41 |只看该作者 |倒序浏览
要实现这个效果,首先想到的就是要用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加一个函数,直接实现让音乐逐渐消失效果。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-4-20 22:34 , Processed in 0.044983 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部