2013-07-08 2 views
0

я получил некоторую простую анимацию, которая работает отлично на IOS 6, но на iOS5 ее отставание и часто зависает экран без какой-либо причиныCABasicAnimation лаги (iOS5)

мне нужна помощь на самом деле, потому что я не имею никакого представления, что может быть здесь неправильно. Кстати я попытался отключить каждый из анимации, и выглядит как проблема в «преобразования» анимации

вот код:

-(void)drawDotAtPointAnimated:(CGPoint)p withRadius:(CGFloat)radius andColor:(UIColor *)color 
{ 
CGRect circleFrame = CGRectMake(p.x - radius*self.scale, p.y - radius*self.scale, radius*2*self.scale, radius*2*self.scale); 
CGPoint circleAnchor = CGPointMake(0.5, 0.5); 

NSLog(@"animating dot with x = %f and y = %f", p.x, p.y); 
NSLog(@"=====mid x = %f, mid y = %f", CGRectGetMidX(circleFrame), CGRectGetMidY(circleFrame)); 
NSLog(@"=====max x = %f, max y = %f", CGRectGetMaxX(circleFrame), CGRectGetMaxY(circleFrame)); 

self.shapeLayer = [CAShapeLayer layer]; 
UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, circleFrame.size.width, circleFrame.size.height)]; 
self.shapeLayer.path = path.CGPath; 
self.shapeLayer.anchorPoint = circleAnchor; 
self.shapeLayer.frame = circleFrame; 
self.shapeLayer.fillColor = color.CGColor; 

[self.layer addSublayer:self.shapeLayer]; 

CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform"]; 
animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(0.0, 0.0, 0)]; 
animation.toValue = [NSValue valueWithCATransform3D:CATransform3DMakeScale(4.0, 4.0, 1.0)]; 
if(self.mode == GameModeOffline) { 
    animation.repeatCount = OFFLINE_GAME_DOT_ANIMATION_REPEAT_COUNT; 
} else { 
    animation.repeatCount = ONLINE_GAME_DOT_ANIMATION_REPEAT_COUNT; 
} 
animation.duration = 1; 
animation.delegate = self; 
[self.shapeLayer addAnimation:animation forKey:@"transform"]; 

CABasicAnimation* fadeAnim = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
fadeAnim.fromValue = [NSNumber numberWithFloat:1.0]; 
fadeAnim.toValue = [NSNumber numberWithFloat:0.0]; 
fadeAnim.duration = 1.0; 
if(self.mode == GameModeOffline) { 
    fadeAnim.repeatCount = OFFLINE_GAME_DOT_ANIMATION_REPEAT_COUNT; 
} else { 
    fadeAnim.repeatCount = ONLINE_GAME_DOT_ANIMATION_REPEAT_COUNT; 
} 
[self.shapeLayer addAnimation:fadeAnim forKey:@"opacity"]; 

self.shapeLayer.transform = CATransform3DMakeScale(4.0, 4.0, 1); 
self.shapeLayer.opacity = 0.0; 

любая помощь будет оценена

+0

Шкала нуля при старте? Разве вы не хотите масштабировать {1, 1, 1}? (т. е. преобразование идентичности) – Cyrille

+0

благодарит много, что действительно помогло – east

ответ

0

Scale нулем при запуске? Разве вы не хотите масштабировать {1, 1, 1}? (т. е. преобразование идентичности)

(Кажется, это просто решило проблему, поэтому я отправляю свой комментарий в качестве ответа).

+0

, но им все же удивительно, что он отлично работает на iOS6 даже с нулевой шкалой – east