在iOS中使用finch时淡出声音

时间:2012-10-11 07:08:17

标签: ios openal finch

我在iOS中使用Finch openAL包装,并希望淡出我的FISound

假设我有30秒的声音,我希望能够在15秒后的5秒内淡出声音。

如果可能的话,我想避免降低到openAL。

1 个答案:

答案 0 :(得分:2)

设置NSTimer,重复降低声音增益直到零。或者你可以这样做:

static const float FadeStep = 0.1;
static const NSTimeInterval FadeDelay = 0.1;

@implementation FISound

- (void) fadeOut
{
    self.gain = MAX(0, self.gain - FadeStep);
    if (self.gain > 0) {
        [self performSelector:_cmd afterDelay:FadeDelay withObject:nil];
    }
}

@end

这是一个快速而肮脏的解决方案,但在很多情况下它应该可以正常工作。