Die Gruppierung der zwei-Kern-Animationen mit CAAnimationGroup Ursachen einer CABasicAnimation nicht zu laufen

Habe ich zwei Animationen, die ich versuche zu führen, die auf einem UILabel auf dem iPhone mit OS 3.1.2. Die ersten Felsen der UILabel hin und her:

CAKeyframeAnimation *rock;
rock = [CAKeyframeAnimation animationWithKeyPath:@"transform.rotation.z"];
[rock setBeginTime:0.0f];
[rock setDuration:5.0];
[rock setRepeatCount:10000];

NSMutableArray *values = [NSMutableArray array];
MovingMath *math = [[MovingMath alloc] init];

//Center start position
[values addObject:[math DegreesToNumber:0]];

//Turn right
[values addObject:[math DegreesToNumber:-10]];

//Turn left
[values addObject:[math DegreesToNumber:10]];

//Re-center
[values addObject:[math DegreesToNumber:0]];

//Set the values for the animation
[rock setValues:values];

[math release];

Die zweite zoomt das UILabel, so dass es größer wird:

NSValue *value = nil;
CABasicAnimation *animation = nil;
CATransform3D transform;
animation = [CABasicAnimation animationWithKeyPath:@"transform"];
transform = CATransform3DMakeScale(3.5f, 3.5f, 1.0f);
value = [NSValue valueWithCATransform3D:transform];
[animation setToValue:value];
transform = CATransform3DMakeScale(1.0f, 1.0f, 1.0f);
value = [NSValue valueWithCATransform3D:transform];
[animation setFromValue:value];
[animation setAutoreverses:YES];
[animation setDuration:30.0f];
[animation setRepeatCount:10000];
[animation setBeginTime:0.0f];

Hinzufügen entweder eines dieser Animationen direkt auf die UILabel s-layer funktioniert wie erwartet.

Allerdings, wenn ich versuche, zu Gruppe der Animationen zusammen, die ersten "rocking" - animation funktioniert nicht:

CAAnimationGroup *theGroup = [CAAnimationGroup animation];

theGroup.duration = 5.0;
theGroup.repeatCount = 10000;
theGroup.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
theGroup.animations = [NSArray arrayWithObjects:[self rockAnimation], [self zoomAnimation], nil]; //you can add more

//Add the animation group to the layer
[[self layer] addAnimation:theGroup forKey:@"zoomAndRotate"];

Die Reihenfolge der Zugabe der Animationen zu der Gruppe spielt keine Rolle. Statt Zoomen, in der Art und Weise oben, ich habe versucht, die änderung der Grenzen, aber das war nicht erfolgreich, da gut. Keine Einsicht würde sehr geschätzt werden. Danke.

  • Zu beachten mein Kommentar unten... ich will diese Animationen zu passieren zur gleichen Zeit. Das problem ist, dass bei der Verwendung der Gruppe, rockAnimation nicht ausgeführt; nur zoomAnimation läuft.
InformationsquelleAutor Christian | 2010-01-22
Schreibe einen Kommentar