0

Finch在 iOS 中使用 openAL 包装器,并且想淡出我FISound的 .

假设我有一个 30 秒的声音,例如,我希望能够在 15 秒后淡出 5 秒以上的声音。

如果可能的话,我想避免使用 openAL。

4

1 回答 1

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

这是一个快速而肮脏的解决方案,但它应该适用于很多情况。

于 2012-10-11T07:20:35.897 回答