2011-11-06 3 views
0

У меня есть один звук, и он воспроизводится через http через мой сервер. Однако он успешно воспроизводит мой сервер, но звук, похоже, не останавливается. Я попытался закодировать его, чтобы остановить, но мне не повезло. Помощь оценилиЗапуск и остановка звука (код предоставлен) iOS

- (IBAction)oneSound:(id)sender; { 
    if (ButtonAlReadyClicked == 1) 
    { 
     ButtonAlReadyClicked = 2; 

     [sender setBackgroundImage:[UIImage imageNamed:@"m2.png"] forState:UIControlStateNormal]; 

    } 
    else if (ButtonAlReadyClicked == 2) 
    { 
     ButtonAlReadyClicked = 1; 

     [sender setBackgroundImage:[UIImage imageNamed:@"m1.png"] forState:UIControlStateNormal]; 

    } 
    if (player && player.playing) { 
     [player stop]; 
     [player release]; 
     player = nil; 
     return; 
    }  

    AVPlayer *player = [[AVPlayer playerWithURL:[NSURL URLWithString:@"http://www.mysite.com/hi.mp3"]] retain]; 

    [player play]; 

} 

ошибка, которую я получаю "ошибка: использование необъявленной идентификатора„игрока“[3]

ответ

0

if (player … линия всегда возвращает ложь, потому что у вас есть player как локальная переменная, не является экземпляром Ивар. Добавьте player ivar в ваш файл .h, затем сохраните тот, который вы его запустили, а не местному игроку.

+0

Я получаю «ошибку: Семантическая Проблема: Свойство„ошибки играя“не найден на объекте типа„AVPlayer *“ » –

+0

Это потому, что AVPlayer не игральную собственности. Проверьте документы: http://developer.apple.com/library/ios/#DOCUMENTATION/AVFoundation/Reference/AVPlayer_Class/Reference/Reference.html – coneybeare

0

Вам нужно объявить переменную в файле .h, названном игроком, и создателем экземпляра после нажатия кнопки. Причина, по которой вы получаете ошибку, состоит в том, что переменная игрока объявляется после попытки доступа к переменной и ее свойства.

- (IBAction)oneSound:(id)sender { 
    if (player == nil) { 
     player = [[AVPlayer playerWithURL:[NSURL URLWithString:@"http://www.mysite.com/hi.mp3"]] retain]; 
     [player play]; 
     ButtonAlReadyClicked = 1; 
     [self oneSound:sender]; 
     return; 
    } 
    if (ButtonAlReadyClicked == 1) { 
     ButtonAlReadyClicked = 2; 
     [sender setBackgroundImage:[UIImage imageNamed:@"m2.png"] forState:UIControlStateNormal]; 
    } 
    else if (ButtonAlReadyClicked == 2) 
    { 
     ButtonAlReadyClicked = 1; 
     [sender setBackgroundImage:[UIImage imageNamed:@"m1.png"] forState:UIControlStateNormal]; 
    } 
    if (player && player.playing) { 
     [player stop]; 
     [player release]; 
     player = nil; 
     return; 
    }  

} 
+0

Это все еще неправильно, как у вас есть. Это объект локального игрока, а не переменная экземпляра – coneybeare

+0

. Я могу подтвердить, что это не сработало, оцените попытку помочь! –

+0

Я никогда не говорил, что это сработает, я ценю, что вы это пробовали, но это пример того, что вы могли бы сделать. Я предполагаю, что это что-то делать с ButtonAlReadyClicked. Измените. Удалите проигрыватель AVPlayer. Я оставил это случайно. @coneybeare –

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

  • Нет связанных вопросов^_^