책임의 한계와 법적 고지 발생하지 setImage를 지연 : 부드러운 :-) 그렇게 될 ... 나는 아이폰 OS 프로그래밍 비교적 새로운 해요, 난 그냥 재미를 위해 함께 가서 자신에게 기본을 가르치려고 노력하고는 AVAudioPlayer는
AVAudioplayer를 사용하여 일련의 .mp3 파일을 함께 재생하는 앱을 만들고 있습니다. 지금까지 그 부분이 잘 작동하고 있습니다. IBActions 및 IBOutlets가 연결되었습니다. 버튼을 클릭하면 오디오가 재생됩니다.
내 문제는 다음과 같습니다. 내 재생 버튼이 Interface Builder에 정의 된 초기 상태로 main.storyboard에 직접 추가되고 설정 및 맞춤 설정되었습니다. 재생을 클릭하면 버튼의 이미지가 재생 중임을 나타내도록 이미지를 변경하려고합니다. 그러나 오디오가 시작 되 자마자보기가 일시 중지 된 것처럼 보입니다. 버튼 이미지는 오디오가 재생 될 때까지 동일하게 유지됩니다. 그래야만 버튼 이미지 자체가 업데이트됩니다.
또한이 특정 단추에 연결되지 않은 다른 임의의 UIImageView의 이미지를 설정하려고했습니다. 같은 경험. playAudioArray 메서드를 주석 처리하는 즉시 버튼 스왑이 작동합니다.
-(IBAction)start_playing:(UIButton*)pressed_button {
[_btn_start setImage:[UIImage imageNamed:@"btn_on-active"] forState:UIControlStateNormal];
[self playAudioArray];
}
나는 충분히 나아 갔다. 희망/의견/제안 ??
감사 만 - 드류
#
업데이트 :
내가이 lopp 내 오디오 플레이어가있을 때 뷰를 업데이트하는 분해 것으로 나타났습니다. 이 코드는 잘 작동 ...
if (audioPlayer.playing == YES) {
[audioPlayer pause];
[sender setImage:[UIImage imageNamed:@"btn_on.png"] forState:UIControlStateNormal];
[_btn_stop setImage:[UIImage imageNamed:@"btn_off.png"] forState:UIControlStateNormal];
} else {
NSString *path = [[NSBundle mainBundle] pathForResource:@"audio_file1" ofType:@"mp3"];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
audioPlayer.volume = 1.0;
audioPlayer.numberOfLoops = 0;
[audioPlayer setMeteringEnabled: YES];
[audioPlayer play];
//changes the image when the button is pressed
[sender setImage:[UIImage imageNamed:@"btn_on.png"] forState:UIControlStateNormal];
[_btn_stop setImage:[UIImage imageNamed:@"btn_off.png"] forState:UIControlStateNormal];
}
하지만이 코드는 아래의하지 않습니다하지 않습니다.
} else {
//changes the image when the button is pressed
[sender setImage:[UIImage imageNamed:@"btn_on.png"] forState:UIControlStateNormal];
[_btn_stop setImage:[UIImage imageNamed:@"btn_off.png"] forState:UIControlStateNormal];
NSArray *theSoundArray = [NSArray arrayWithObjects:@"audio1",@"audio2",@"audio3",nil];
for (int i = 0; i < totalSoundsInQueue;) {
NSString *sound = [theSoundArray objectAtIndex:i];
// Wait until the audio player is not playing anything
while(![audioPlayer isPlaying]){
NSString *path = [[NSBundle mainBundle] pathForResource:@"mom" ofType:@"mp3"];
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL];
audioPlayer.volume = 1.0;
audioPlayer.numberOfLoops = 0;
[audioPlayer setMeteringEnabled: YES];
[audioPlayer play];
i++;
}
}
}
오디오가 잘 재생
는, 내 모든 소리를 반복하고 오류가 발생하지 않습니다. 루프가 끝난 후에 만 '내 상태'버튼 만 설정됩니다. 나는 루핑 방법의 여러 가지 유형의 번호로 이것을 시도했습니다. 왜냐하면, 각각 동안, ... 내가 소리를 통해 반복하기 시작할 때마다 오디오 재생은 훌륭하게 작동하지만, 디스플레이는 모든 초점을 잃어버린다.
나에게 떠오릅니다. 루프가 끝나면 "정지"버튼이 클릭 가능한 (탭 가능) 특성을 잃어 버립니다. 루프가 끝날 때까지. 내가 루프에 없다면 정지 버튼이 문제없이 작동합니다.
죄송합니다. 여기에서 완전히 새로운 실수를하는 경우 ... 생각/의견 누구?
'playAudioArray' 메소드가'_btn_start'의 상태를 설정합니까? –
아니, start_playing 메서드의 맨 위에 설정되어 있습니다 (첫 번째 줄). – Drew