2017-05-10 1 views
0

도청시 재생 및 일시 중지 이미지간에 전환하는 단추가 있습니다. 재생 이미지가 표시되면 반복 된 사운드가 재생되고, 이미지가 일시 중지되면 사운드 재생이 중지됩니다.루프 재생으로 재생/일시 중지 단추 전환

나는이 문제를 해결할 수 있었지만 한 가지 문제가 있습니다. 일시 정지 (정지) 버튼을 누르면 마지막으로 소리가 재생됩니다 (따라서 일시 정지 동작은 소리의 초 수만큼 지연됩니다).

여기 내 코드입니다 :

@implementation ViewController 
AVAudioPlayer *myAudio; 

- (void)viewDidLoad { 
[super viewDidLoad]; 

[self.myButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal]; 
[self.myButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateSelected]; 
} 

- (IBAction)buttonTapped:(id)sender { 

NSURL *musicFile; 
musicFile = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"]]; 
myAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil]; 


    if(self.myButton.selected) 
     [self.myButton setSelected:NO]; 

    else 
     [self.myButton setSelected:YES]; 

    if(self.myButton.selected) 
     [myAudio setNumberOfLoops:-1]; 
     [myAudio play]; 
} 

답변

1

당신이 플레이어에게 당신이 버튼을 누르 때마다 만드는 일을하고 있습니다.

당신이 시도 하나 AVPlayer (viewDidLoad에서)을 생성하고,이 buttonTapped: 기능에 playpause 기능입니다 사용해야합니다. 이 상태 (선택 여부) 다음의 상태에 따라이 최초의 토글, 플레이어가 되감기와 재생을 시작하거나 (즉시) 자체를 일시 중지 할 것 버튼을 클릭

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    [self.myButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal]; 
    [self.myButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateSelected]; 

    NSURL *musicFile = [NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:@"sound" ofType:@"mp3"]]; 
    myAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:musicFile error:nil]; 
} 

- (IBAction)buttonTapped:(id)sender { 
    [self.myButton setSelected:!self.myButton.selected]; 
    if (self.myButton.selected) { 
    [player seekToTime:kCMTimeZero]; 
    [player play]; 
    } 
    else { 
    [player pause]; 
    } 
} 

.

+1

고맙습니다. @Ramon !! 훌륭한 작품 :) "player"를 "myAudio"로 변경하고 "seekToTime ..."함수를 얻지 못했지만 "setNumberOfLoops"로 변경했습니다. –