Ошибка с AVAudio Player в SKScene

Я пытаюсь создать фоновую музыку в своей игре с помощью AVAudioPlayer, поэтому я установил этот код в методе initWithSize моего SKScene:

//SETTING BACKGROUND MUSIC//
NSError * err = nil;
NSURL * musicFile = [[NSBundle mainBundle] URLForResource:@"Cosmic Rush" withExtension:@"m4a"];
music = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:&err];
if(err)
{
    NSLog(@"%@", [err userInfo]);
    return;
}
[music prepareToPlay];
music.numberOfLoops = -1;
[music setVolume:0.5];
//SETTING BACKGROUND MUSIC//

Затем другим методом: [music play]; Однако звук никогда не воспроизводится, и я пробовал всевозможные расширения: .mp3, .caf, .mp4 и т. д. Я также проверял людей, у которых была такая же проблема, но ни одно из решений, которые решили их проблемы работал с моим.


person lucas_turci    schedule 30.04.2014    source источник
comment
Вы регистрируете какие-либо ошибки с помощью NSLog? Вы пробовали ставить точки останова?   -  person Rafa de King    schedule 01.05.2014
comment
Пара вопросов: каково точное имя вашего аудиофайла (как оно появляется в вашем проекте)? Вы пробовали не использовать пробел в имени аудиофайла? Пробовали ли вы URLForResource:@SongName.mp3 withExtension:nil]; вместо того, что у вас сейчас есть (изменить мп3 в актуальный формат)? Вы установили делегата AVAudioPlayer? Вы можете воспроизвести другой аудиофайл или только не этот?   -  person sangony    schedule 01.05.2014
comment
Ок, попробовал без пробела в имени файла, с расширением mp3, и теперь в NSLog окно вылезла ошибка, но внутри ничего. Но я не установил делегата AVAudioPlayer. Как я могу это сделать?   -  person lucas_turci    schedule 01.05.2014
comment
Подумайте о том, чтобы сделать ивар с именем music в вашем коде свойством со строгой ссылкой. См. этот пост SO для получения дополнительной информации -›ссылка   -  person Bamsworld    schedule 01.05.2014
comment
Попробуйте записать это: NSLog(@Произошла ошибка: %@, [err localizedDescription]);   -  person Theis Egeberg    schedule 01.05.2014
comment
Хорошо, я попытался сделать сильную ссылку на музыкальный вар, но ничего не изменилось. Я использовал локализованное описание и получил следующее: Операция не может быть завершена. (Ошибка OSStatus 1685348671.)   -  person lucas_turci    schedule 01.05.2014
comment
Я решил проблему ... Аудиофайл попал в неправильное место после того, как я перетащил его в свой проект в Xcode. Я ценю все ответы в любом случае   -  person lucas_turci    schedule 01.05.2014


Ответы (1)


есть более простой способ добавить фоновую музыку к вашей сцене. я использую следующие шаги и работают так же хорошо, как и любые другие методы, и это проще.

импортируйте @import AVFoundation; вверху сцены.

добавьте его как свойство сразу после вашего @implementation.

AVAudioPlayer *_backgroundMusicPlayer;

затем объявите метод для музыки

- (void)playBackgroundMusic:(NSString *)filename
{
    NSError *error;
    NSURL *backgroundMusicURL =
    [[NSBundle mainBundle] URLForResource:filename
                            withExtension:nil];
    _backgroundMusicPlayer =
    [[AVAudioPlayer alloc]
     initWithContentsOfURL:backgroundMusicURL error:&error];
    _backgroundMusicPlayer.numberOfLoops = -1;
    [_backgroundMusicPlayer prepareToPlay];
    [_backgroundMusicPlayer play];
}

после этого создайте ссылку на этот метод в вашем -(id)initWithSize:(CGSize)size, как показано ниже

[self playBackgroundMusic:@"bgMusic.mp3"];

это должно позаботиться о фоновой музыке для вас.

person Adrian P    schedule 01.05.2014
comment
спасибо за ваш ответ, но я обнаружил, что проблема была в ссылке на мой аудиофайл. Это было в неправильном месте. - person lucas_turci; 01.05.2014