2013-03-23 3 views
0

У меня есть ViewController: GLKViewController с этим кодом:Xcode AVAudioPlayer не играет

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSString *path = [[NSBundle mainBundle] pathForResource:@"background-music-aac" ofType:@"caf"]; 
    NSURL *url = [NSURL URLWithString:path]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 

    AVAudioPlayer *audio = [[AVAudioPlayer alloc] initWithData:data error:nil]; 
    audio.delegate = self; 
    audio.volume = 1.0; 
    audio.numberOfLoops = -1; 

    [audio prepareToPlay]; 
    [audio play]; 

    [self setupContext]; 
    [self setupDisplay]; 
} 

Однако ... мои графические вещи работает нормально, но симулятор IOS не играет никакой музыки. Я что-то не так?

+0

Вы проверили, не ваши ли данные? добавьте отладочные отпечатки для URL-адресов и объектов данных, и это будет полезно, если вы используете аргумент ошибки – giorashc

+0

данных нет, но почему ^^ этот аудиофайл находится в моих ресурсах – user1882812

+0

Вы добавили его в свой проект? – giorashc

ответ

1

Предполагая, что вы используете ARC, игрок получает освобождение, как только ваш метод вернется к вызывающему. Цитирую this answer:

ARC вставляет разделительный вызов аудио-плеер, так что это освобождаться сразу же после выхода из метода, где она создана.

Попробуйте ввести AVAudioPlayer как собственность.

Если ваш data равен нулю, файл не был правильно добавлен в проект. Чтобы добавить файл в проект, просто перетащите его и добавьте в свои цели.

Кроме того, AVAudioPlayer имеет способ, initWithContentsOfURL:, который вы, возможно, захотите использовать.

+0

Создание свойства и использование initWithContentsOfURL ничего не меняет :( – user1882812

+0

Это не проблема проблемы. Где вы видите, что игрок освобожден? – giorashc

+0

@giorashc Игрок не сохранен. Это хорошо известно и на него был дан ответ ранее. : //stackoverflow.com/questions/8016765/avaudioplayer-not-playing-any-sound – duci9y

Смежные вопросы