код для воспроизведения звука программно с помощью кнопки на iphone - PullRequest
0 голосов
/ 13 апреля 2010

Я пытаюсь выяснить, как подключить кнопку для программного воспроизведения звука без использования IB. У меня есть код для воспроизведения звука, но я не могу подключить кнопку для воспроизведения звука? любая помощь?

вот мой код, который я использую:

     - (void)playSound
    {
        NSString *path = [[NSBundle mainBundle] pathForResource:@"boing_1" ofType:@"wav"];
        AVAudioPlayer* myAudio = [[AVAudioPlayer alloc] 
                 initWithContentsOfURL:[NSURL fileURLWithPath:path error:NULL]];
        myAudio.delegate = self;
        myAudio.volume = 2.0;
        myAudio.numberOfLoops = 1;
        [myAudio play];
    }

Ответы [ 2 ]

0 голосов
/ 13 апреля 2010

Чтобы подключить кнопку, сделайте ваш метод playSound обработчиком для события кнопки UIControlEventTouchUpInside. Предполагая, что это в контроллере представления, вы можете поместить это в метод viewDidLoad:

[button addTarget:self action:@selector(playSound) forControlEvents:UIControlEventTouchUpInside]; 

К вашему сведению, вы теряете память, потому что alloc - объект, но никогда release - объект.

Вы должны создать новый AVAudioPlayer член для класса, чтобы избежать этого.

@interface MyViewController : ...
{
    ...
    AVAudioPlayer* myAudio;
    ...
}

- (void)playSound
{
    NSString *path = [[NSBundle mainBundle] pathForResource:@"boing_1" ofType:@"wav"];
    [myAudio release];
    myAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path error:NULL]];
    myAudio.delegate = self;
    myAudio.volume = 2.0;
    myAudio.numberOfLoops = 1;
    [myAudio play];
}

Не забудьте указать [myAudio release] в вашем методе dealloc.

(я сделал это без объявления myAudio как @property, но это не обязательно)

0 голосов
/ 13 апреля 2010
[button addTarget:self action:@selector(playSound) forControlEvents:UIControlEventTouchUpInside];

UIButton наследует методы назначения / действия от UIControl .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...