我正试图制作一个轮子的动画
当手指停留>0.1秒时,车轮“弹出”,即I动画比例从1.0到1.2。
当手指移动时,轮子随之转动(只有当它被弹出时)。
但我遇到了一个问题:一旦它开始旋转,刻度就减小到1.0。
- (void) spin: (Direction) direction
{
float thetaOld = thetaWheel;
float k = (direction == AntiClockwise) ? -1 : 1;
float t = 2 * M_PI * ( k / 12.0 );
thetaWheel += t;
CABasicAnimation * anim = [CABasicAnimation animationWithKeyPath:@"transform"];
anim.fromValue = [NSNumber numberWithDouble: thetaOld];
anim.toValue = [NSNumber numberWithDouble: thetaWheel];
anim.valueFunction = [CAValueFunction functionWithName: kCAValueFunctionRotateZ];
anim.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
anim.duration = 0.1f;
anim.fillMode = kCAFillModeForwards;
anim.removedOnCompletion = NO;
[self.wheelLayer addAnimation: anim forKey:@"transform"];
}
- (void) popOut
{
CABasicAnimation * anim = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
anim.fromValue = [NSNumber numberWithDouble: 1.0];
anim.toValue = [NSNumber numberWithDouble: 1.2];
anim.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
anim.duration = 0.25f;
anim.fillMode = kCAFillModeForwards;
anim.removedOnCompletion = NO;
[self.wheelLayer addAnimation: anim forKey:@"transform.scale"];
}
// doesnt get used yet
- (void) popBack
{
CABasicAnimation * anim = [CABasicAnimation animationWithKeyPath:@"transform.scale"];
anim.fromValue = [NSNumber numberWithDouble: 1.2];
anim.toValue = [NSNumber numberWithDouble: 1.0];
anim.timingFunction = [CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionEaseInEaseOut];
anim.duration = 0.1f;
anim.fillMode = kCAFillModeForwards;
anim.removedOnCompletion = NO;
[self.wheelLayer addAnimation: anim forKey:@"transform.scale"];
}
最后一个程序此时无法使用!所以我看不出是什么把比例缩小到1…
看起来第二个动画覆盖了第一个…
如何正确执行此操作?