2012-10-22 3 views
4

나는 이런 GLKViewController 만들 :일시 중지 된 상태에서 시작하는 GLKViewController는 어떻게 만듭니 까?

// Create a GLK View Controller to handle animation timings 
_glkVC = [[GLKViewController alloc] initWithNibName:nil bundle:nil]; 
_glkVC.preferredFramesPerSecond = 60; 
_glkVC.view = self.glkView; 
_glkVC.delegate = self; 
_glkVC.paused = YES; 
NSLog(@"initial state: %@", _glkVC.paused ? @"paused" : @"running"); 

을하지만 즉시 위임 업데이트 방법 및 상기 NSLog의 출력을한다 호출 시작 : 나는 setNeedsDisplay하지만 내가 원하는 내보기 업데이트를 관리하고 initial state: running

GLKViewController 애니메이션을 수시로 처리해야하므로 필요할 때만 일시 중지하고 싶습니다. 일시 중지 된 상태에서 컨트롤러를 시작하는 방법이 있습니까?

내가 업데이트 방법에 처음 다음 .preferredFramesPerSecond = 1을 설정 나는 if(preferredFramesPerSecond == 1)을 확인하고 (preferredFramesPerSecond 내 진짜 원하는 값을 설정도 등) .paused = YES을 설정 : 어떤 대답을 대신

+0

이 질문을 다시 열어보고 싶습니다. FPS 해결 방법은 괜찮지 만 더 좋은 방법이 있을까요? –

답변

1

나는이 작품 주위에 사용하고 있습니다. 그런 다음 나머지 업데이트 메서드가 초기화 후 한 번 실행되도록 허용하거나 아직 실행하지 않으려면 즉시 반환 할 수 있습니다.

그런 다음 필요에 따라 수동으로 setNeedsDisplay을 사용하여 다시 그리기를 트리거하고 애니메이션이 필요할 때 일시 중지합니다.

누구든지 더 나은 해결책이 있다면 평소와 같이 대답하십시오.

2

viewDidLoad 메서드 대신 viewDidAppear 메서드에서 일시 중지 시도가 있습니까? 그러면 다음과 같이 보일 것입니다 :

붐, 완료! 이 기능이 작동하면 발사시 잠시 멈추도록 수천 번 "수표"체크를 저장합니다!

+0

이것은 작동하지 않습니다. draw 메소드는'viewDidAppear'가 히트되기 전에 몇 번 해고됩니다. –

1

resumeOnDidBecomeActive을 덮어 쓰려고 시도 했습니까? ? 이렇게하면 첫 번째 애니메이션을 포함한 모든 활성화시 애니메이션이 일시 중지 상태를 유지해야합니다.

2

viewDidAppear 메서드는 저에게는 적합하지만 최적으로는 작동하지 않습니다. 일시 중지가 적용되기 전에 가시적 인 애니메이션 프레임이 몇 개 발생합니다. viewWillAppear를 사용하면 훨씬 더 효과적입니다.

관련 문제