Запуск и остановка звука (код предоставляется) iOS - PullRequest
0 голосов
/ 07 ноября 2011

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

- (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]

Ответы [ 2 ]

0 голосов
/ 07 ноября 2011

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

- (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 голосов
/ 07 ноября 2011

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

...