2012-10-02 2 views
0

2 가지 다른 사운드를 동시에 재생하려고합니다. 이는 두 코드로 모든 코드를 넣을 때 완벽하게 작동합니다. 대신 사운드 플레이어 코드가 포함 된 메서드를 만들고 노래 이름을 인자로 사용하여 해당 메서드를 호출하는 방법을 생각했습니다. 이것은 작동 ... 거의.다른 방법을 사용하여 동시에 사운드 재생

버튼 1 -> 사운드 1이 재생됩니다. 좋은!!! 버튼 2 -> 사운드 1을 누르고 사운드 2가 시작됩니다. 안좋다!!!

사운드를 두 손으로 쥐고 소리가 나지 않도록하는 방법.

다음은 코드입니다. 그것은 아마 간단한 것입니다,하지만 저는 잠시 머물러 있습니다.

. 
. 
. 
-(IBAction) playSound1 
{ 
    NSString *nameOfSong = @"song1"; 
    [self nowPlay:nameOfSong]; 
} 

-(IBAction) playSound2 
{ 
    NSString *nameOfSong = @"song2"; 
    [self nowPlay:nameOfSong]; 
} 

-(void) nowReallyPlay:(NSString*) whatsTheName 
{ 
    NSURL *playSong = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:whatsTheName ofType:@"mp3"]]; 
    self.soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:playSong error:nil]; 
    soundPlayer.delegate = self; 
    soundPlayer.volume= 0.5; 
    soundPlayer.numberOfLoops = 0; 
    [soundPlayer play]; 
} 
. 
. 
. 

답변

0

두 개의 서로 다른 AudioPlayers를 정의하고 if 문을 사용하여 재생할 AudioPlayers를 선택하여 해결했습니다.

작동하지만 여전히 정직한 의견으로는별로 섹시하지 않습니다. 내 프로그램 (내 어린 소녀를위한 앱)의 경우에는 정상적으로 작동하지만 25 사운드를 재생하려는 경우 어떻게해야합니까? 25 개의 AVPlayers를 생성해야합니까?

장애물을 제거하는 또 다른 (섹시한) 방법이 있습니까?

. 
. 
-(IBAction) playSound1 
{ 
NSString *nameOfSong = @"song1"; 
NSString *playThis = @"first_song"; 
[self nowPlay:nameOfSong:playThis]; 
} 

-(IBAction) playSound2 
{ 
NSString *nameOfSong = @"song2"; 
NSString *playThis = @"second_song"; 
[self nowPlay:nameOfSong:playThis]; 
} 

-(void) nowReallyPlay:(NSString*) whatsTheName : (NSString*) playWhat 
{ 
if (playWhat == @"first_song") 
{ 
    NSURL *playSong = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:whatsTheName ofType:@"mp3"]];   
    self.soundPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:playSong error:nil]; 
    sound1Player.delegate = self; 
    sound1Player.volume= 0.5; 
    sound1Player.numberOfLoops = 0; 
    [sound1Player play]; 

} else if (playWhat == @"second_song"") { 

    NSURL *playSong = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:whatsTheName ofType:@"mp3"]];   
    self.sound2Player = [[AVAudioPlayer alloc] initWithContentsOfURL:playSong error:nil]; 

    sound2Player.delegate = self; 
    sound2Player.volume= 0.5; 
    sound2Player.numberOfLoops = 0; 
    [sound2Player play]; 
    } 
} 
. 
. 
+0

응답 빈도가 높지 않았습니다. 누군가는 뭔가를 회피하기 위해 방아쇠를 당겨야 만합니다 ... 아니면 적어도 나를 당나귀라고 부르세요. –