我Finch
在 iOS 中使用 openAL 包装器,并且想淡出我FISound
的 .
假设我有一个 30 秒的声音,例如,我希望能够在 15 秒后淡出 5 秒以上的声音。
如果可能的话,我想避免使用 openAL。
设置一个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
这是一个快速而肮脏的解决方案,但它应该适用于很多情况。