簡體   English   中英

iOS如何在Sprite Kit游戲中創建音頻淡入/淡出效果?

[英]iOS how to create audio fade in/out effect in a Sprite Kit game?

我對如何在Sprite Kit游戲中管理背景音樂以實現淡入/淡出感興趣。

我注意到Sprite Kit有一個內置的聲音播放器,但它似乎對非常短的效果更有用,比如“on hit”聲音:

[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];

有一個bgVolume財產OALSimpleAudio ,但沒有真正的褪色。

應該嘗試編寫我自己的淡入/淡出代碼, 如果有什么東西我可以用來控制通用音樂播放器的音量,如OALSimpleAudio

您也可以使用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];

然后你從這篇文章中添加函數:

- (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;
    }
}

ObjectAL內置了一個用於音樂播放的AVAudioPlayer包裝器。 它被稱為OALAudioTrack

OALAudioTrack有一個方法fadeTo:duration:target:selector:你可以用來做淡化。 您已經有一個OALAudioTrack實例可用作簡單音頻接口的backgroundTrack屬性:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM