iOS で openAL ラッパーを使用しておりFinch
、自分の をフェードアウトしたいと考えてい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
これは簡単で汚い解決策ですが、多くの場合はうまくいくはずです。