2011-02-24 6 views
0

맞아, 미안하지만, 멍청한데, xcode를 처음 사용하는 사람은 미안해. 저는 현재 사운드 보드를 제작하고 있으며, 모든 버튼을 작동시켜 사운드를 재생할 수 있습니다.AVAudioPlayer를 사용하여 서로 연주하는 소리

그러나 한 사운드가 재생되는 경우 원래 사운드를 멈추기보다는 다른 버튼을 누르면 사운드가 재생되므로 누군가를 고칠 방법을 알고 있다면 방황하고 있습니까? 누군가가 나를 도울 수 있다면

- (IBAction)playsound { 
    NSString *path = [[NSBundle mainBundle] pathForResource:@"Gold" ofType:@"mp3"]; 
    AVAudioPlayer* myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
    myAudio.delegate = self; 
    myAudio.volume = 2.0; 
    myAudio.numberOfLoops = 0; 
    [myAudio play]; 
} 

정말 감사하게 될 거라고 :

여기에 내가 버튼을 위해 사용하고 코드입니다.

감사합니다.

답변

1

다른 사운드가 여전히 재생중인 경우 중지하라는 메시지가 필요합니다. 다른 AVAudioPlayer에서 stop 메서드를 호출하는 방법을 살펴볼 수 있습니다. 그래서, 당신이 가지고있는 곳과 같은 것이 있습니다 :

[myAudio play]; 

... 다른 소리가 멈추라는 것을 알려주는 바로 전에 메소드 호출을 삽입하십시오.

[myOtherAudioThatsPlaying stop]; 
[myAudio play]; 

AVAudioPlayer documentation을 검색하는 것이 좋습니다.

0

bobtiki의 대답은 공식적으로 정확하지만, 소리가 멈춘 후에도 유용하게 사용하려는 경우 (예 : 다시 재생하기 시작하는 경우)에만 stop 메서드를 호출하는 것이 좋습니다. 방금 제거하고 싶기 때문에 플레이어의 할당을 해제하면 자동으로 사운드 재생이 중지됩니다. 그래서, 대신

AVAudioPlayer* myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 

의 클래스에 인스턴스 변수를 추가

AVAudioPlayer* myAudio; 

그럼 그냥

myAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 

을 사용하여 매번 새로운 사운드입니다 피 layed, myAudio에 새 포인터가 할당되고 이전의 AVAudioPlayer은 할당이 해제됩니다.

관련 문제