Почему моя анимация мерцает на iPhone?

45
4

Я получаю случайные мерцания из следующей анимации - похоже, что изображение центрируется примерно на 1 кадр или около того, прежде чем продолжить то, что оно должно было делать, и я не знаю, почему.


-(void)generateWander{
//NSLog(@"generateWander");

if(targetChange==0)
{
targetChange=TARGET_LENGTH+1;
float destinationAngle=((float)random()/RAND_MAX)*2*M_PI;
NSLog(@"new destination: %f",destinationAngle);
targetY=sin(destinationAngle)*TARGET_RADIUS;
targetX=cos(destinationAngle)*TARGET_RADIUS;
NSLog(@"new target is: %f %f",targetX,targetY);
}
targetChange--;
float newVectorX=(targetX-currentX)*VECTOR_SCALAR;
float newVectorY=(targetY-currentY)*VECTOR_SCALAR;
vectorX+=newVectorX;
vectorY+=newVectorY;
if (pow((vectorX*vectorX+vectorY*vectorY),.5f)>MAX_SPEED) {
vectorX*=.5;
vectorY*=.5;
}
float newX=currentX+vectorX;
float newY=currentY+vectorY;
//NSLog(@"New position is: %f %f",newX,newY);
self.wander=[CAKeyframeAnimation
animationWithKeyPath:@"transform"];
NSValue *initial = [NSValue valueWithCATransform3D:
CATransform3DMakeTranslation(currentX, currentY, 0.0)];
NSValue *final = [NSValue valueWithCATransform3D:
CATransform3DMakeTranslation(newX, newY, 0.0)];
self.wander.values = [NSArray arrayWithObjects:initial, final, nil];
wander.removedOnCompletion=NO;
wander.duration = ANIMATION_TIME;
[self.wander setDelegate:self];
[wander setDelegate:self];
[self.icon removeAnimationForKey:@"wander"];
[self.icon addAnimation:self.wander forKey:@"wander"];
currentX=newX;
currentY=newY;
/*currentX=0.0F;
currentY=0.0F;
vectorX=0.0F;
vectorY=0.0F;
targetX=0.0F;
targetY=0.0F;
targetChange=0;*/
}

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag
{
//NSLog(@"Animation Did Stop was called");
if (theAnimation==[backgroundRays animationForKey:@"rotate"]) {
//NSLog(@"rotate was detected");
[backgroundRays removeAnimationForKey:@"rotate"];//May not be necessary, but I think it helps prevent a memory leak
[self.backgroundRays addAnimation:self.rotate forKey:@"rotate"];
}
else if(theAnimation==[icon animationForKey:@"wander"]){
[self generateWander];
}
}

спросил(а) 2010-10-08T06:48:00+04:00 9 лет, 1 месяц назад
0
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема