【问题标题】:iOS how to create audio fade in/out effect in a Sprite Kit game?iOS 如何在 Sprite Kit 游戏中创建音频淡入/淡出效果?
【发布时间】:2014-01-02 18:05:16
【问题描述】:

我对如何在我的 Sprite Kit 游戏中管理背景音乐以实现淡入/淡出很感兴趣。

我注意到 Sprite Kit 有一个内置的声音播放器,但它似乎对非常短的效果更有用,例如“击中”声音:

[self runAction:[SKAction playSoundFileNamed:@"music.mp3" waitForCompletion:NO]];

似乎没有办法阻止这种声音。

我正在使用 Kobold Kit,它带有可以播放声音的 OALSimpleAudio 库:

    [[OALSimpleAudio sharedInstance] preloadEffect:@"die.wav"];
    [[OALSimpleAudio sharedInstance] playEffect:@"die.wav"];

    [[OALSimpleAudio sharedInstance]preloadBg:@"battle.mp3"];
    [[OALSimpleAudio sharedInstance] playBg:@"battle.mp3" loop:YES];

OALSimpleAudio 中有一个 bgVolume 属性,但没有真正的淡入淡出。

应该尝试编写我自己的淡入/淡出代码如果有一些东西可以用来控制通用音乐播放器的音量,例如 OALSimpleAudio

【问题讨论】:

标签: ios audio volume sprite-kit objectal


【解决方案1】:

您也可以只使用 AVAudioPlayer 中的构建,当然也可以根据您的播放器调整该功能:

//play background sound
NSError *error;
NSURL * backgroundMusicURL = [[NSBundle mainBundle] URLForResource:@"SpaceLife" withExtension:@"mp3"];
self.backgroundMusicPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:backgroundMusicURL error:&error];
self.backgroundMusicPlayer.numberOfLoops = -1;
[self.backgroundMusicPlayer prepareToPlay];
[self.backgroundMusicPlayer play];

然后你从这个post添加函数:

- (void)doVolumeFade
{  
    if (self.backgroundMusicPlayer.volume > 0.1) {
        self.backgroundMusicPlayer.volume = self.player.volume - 0.1;
        [self performSelector:@selector(doVolumeFade) withObject:nil afterDelay:0.1];       
     } else {
        // Stop and get the sound ready for playing again
        [self.backgroundMusicPlayer stop];
        self.backgroundMusicPlayer.currentTime = 0;
        [self.backgroundMusicPlayer prepareToPlay];
        self.backgroundMusicPlayer.volume = 1.0;
    }
}

【讨论】:

  • 这是天才,简单而有效
【解决方案2】:

ObjectAL 内置了一个用于音乐播放的 AVAudioPlayer 包装器。它叫做OALAudioTrack

OALAudioTrack 有一个方法fadeTo:duration:target:selector:,您可以使用它来进行衰减。您已经拥有一个可用的 OALAudioTrack 实例作为简单音频接口的 backgroundTrack 属性:

[[OALSimpleAudio sharedInstance].backgroundTrack fadeTo:.. duration:.. ..];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-09
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多