我在iOS中使用Finch
openAL包装,并希望淡出我的FISound
。
假设我有30秒的声音,我希望能够在15秒后的5秒内淡出声音。
如果可能的话,我想避免降低到openAL。
答案 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
这是一个快速而肮脏的解决方案,但在很多情况下它应该可以正常工作。