gpt4 book ai didi

ios - 从 SpriteKit 中的类播放音频

转载 作者:行者123 更新时间:2023-11-29 02:35:09 27 4
gpt4 key购买 nike

好的,我正在使用 SpriteKit 开发一个游戏,并且整个应用程序都有背景音乐。最初,我只是在每个场景中使用了一个新的 AVAudioPlayer 以及适当的音频文件,但现在我发现我希望在菜单等之间移动时能够不间断地播放音频。所以我尝试使用一个单独的类来处理所有背景音乐。我不确定这在技术上是否可行,如果不行,我想看看是否有其他方法来解决我的问题。

所以进入代码...这是我的音频类的头文件:

#import <AVFoundation/AVFoundation.h>

typedef NS_ENUM(int, songTitle) {
Menu_Music,
Level_1,
Level_2,
Game_Over,
};

@interface NWAudioPlayer : AVAudioPlayer

@property (nonatomic, assign) songTitle songName;
@property (nonatomic) AVAudioPlayer* bgPlayer;

-(void)createAllMusicWithAudio: (songTitle)audio;

@end

下面是实现:

#import "NWAudioPlayer.h"

@implementation NWAudioPlayer

-(void)createAllMusicWithAudio: (songTitle)audio {

if ([[GameState sharedGameData] audioWillPlay] == YES) {
switch (audio) {
case Menu_Music:
[self playMusicWithString:@"menuMusic"];
break;
case Level_1:
[self playMusicWithString:@"Level-1-Music"];
break;
case Level_2:
[self playMusicWithString:@"Level-2-Music"];
break;
case Game_Over:
break;
default:
break;
}
}
}

-(void)playMusicWithString: (NSString *)file {
NSString *soundFile = [[NSBundle mainBundle] pathForResource:@"menuMusic" ofType:@"m4a"];
NSURL *soundFileUrl = [NSURL fileURLWithPath:soundFile];
NSError *Error = nil;
_bgPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:soundFileUrl error:&Error];
_bgPlayer.numberOfLoops = -1;

[_bgPlayer prepareToPlay];

NSLog(soundFile);
}

@end

然后这是我的场景实现中的内容:

-(void)createAudio
{
[[NWAudioPlayer alloc] createAllMusicWithAudio:Menu_Music];
[[NWAudioPlayer alloc].bgPlayer play];
}

显然我会在该场景的初始化中调用 [self createAudio]

令人沮丧的是,我没有收到任何错误,并且我的 NSLog 显示该方法正在调用正确的音频文件,但没有播放任何内容。显然我错过了一些东西......我很难过。任何帮助表示赞赏!非常感谢!

最佳答案

将管理AVAudioPlayer 的代码与场景代码分开。例如,您可以将它放在您的应用程序委托(delegate)中,或者使用单例实例创建您自己的音乐播放器类。

关于ios - 从 SpriteKit 中的类播放音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26441411/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com