이 방법은이 문제를 해결하는 좋은 방법은 아니지만 나에게 트릭입니다. 스케일 애니메이션이 있는데, 뷰가 6.0 배로 커지고 2 초를 기다린 다음 다시 1.0으로 축소됩니다. 2 초 동안 기다리는 것은 performSelector : withObject : afterDelay :를 일시 중지 할 수없는 부분을 사용합니다.
이
일시 정지 부분입니다 : (그것은 그 작은 변화이다, 당신은 늘 참조) 나는 0.001를 추가하는 이유
[UIView animateWithDuration:0 delay:2.0 options:0 animations:^{
self.transform = CGAffineTransformMakeScale(6.0 + 0.001, 6.0 + 0.001);
} completion:^(BOOL finished) {
[self animateOutWithCompletion:completion];
}];
당신이 변화 애니메이션 있는지 확인, 이잖아.
@interface UIView (AnimationsHandler)
- (void)pauseAnimations;
- (void)resumeAnimations;
@end
@implementation UIView (AnimationsHandler)
- (void)pauseAnimations
{
CFTimeInterval paused_time = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil];
self.layer.speed = 0.0;
self.layer.timeOffset = paused_time;
}
- (void)resumeAnimations
{
CFTimeInterval paused_time = [self.layer timeOffset];
self.layer.speed = 1.0f;
self.layer.timeOffset = 0.0f;
self.layer.beginTime = 0.0f;
CFTimeInterval time_since_pause = [self.layer convertTime:CACurrentMediaTime() fromLayer:nil] - paused_time;
self.layer.beginTime = time_since_pause;
}
이 코드를 자유롭게 사용하지만, 내가 전에 말했듯이이 문제를 해결하는 좋은 방법이 아니다 :
UIView의 애니메이션이 범주를 사용하여 일시 정지 할 수 있습니다. UIView 애니메이션이 작동하는 방식과 이러한 애니메이션을 일시 중지 할 수있는 가능성을 활용하는 것입니다.
어쩌면 당신은 http://stackoverflow.com/a/11984865/513286 – cekisakurek
같은 것을 사용할 수 있습니다. 내 머리 위로 생각할 수있는 기능을 호출하는 NSTimer가있는 사용자 지정 클래스의 개체를 만드는 것입니다 그 클래스에서 여러 차례 파이어의 마지막 수에 도달 할 때까지 리로드를 호출합니다. 하지만 CPU가 무거워 보입니다. – Arbitur
게임에 사용할 총체적인 타이머가 있습니까? 게임이 실행될 때마다 게임 상태가 증가하고 변경됩니다. – Wain