2012-05-23 34 views
-1

我想展示一个简单的点移动。我建立了一个层,设定的范围,位置和颜色,然后用CAAnimation展示其移动为什么CABasicAnimation显示两点移动?

CALayer *l = [CALayer layer]; 

    l.bounds = CGRectMake(0,0,20,20); 
    l.position = CGPointMake(x,y); 
    l.cornerRadius = 10; 
    l.backgroundColor = [UIColor blueColor].CGColor; 

    [self.theView.layer addSublayer:l]; 


    CABasicAnimation *anim1 = [CABasicAnimation animationWithKeyPath:@"position"]; 
    anim1.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]; 
    CGPoint to = CGPointMake(x+dx, y+dy); 
    anim1.fromValue = [l valueForKey:@"position"]; 
    anim1.toValue = [NSValue valueWithCGPoint:to]; 
    l.position = to; 
    anim1.duration = 3.0; 

当我运行它,我看到两个蓝色圆圈运动。我想看到一个圆从(x,y)移动到(x + dx,y + dy)。有人能告诉我我做错了什么吗?

感谢

回答

2

只显示一个圆圈我,但我加入了动画层(你的代码示例并没有这么做),这样(的代码的最后一行之后):

[l addAnimation:anim1 forKey:@"myNumberOneAnimation"]; 

如果没有这一行代码,您可以通过设置图层的位置来获得隐式的动画。更改与视图无关的图层的动画属性会导致隐式动画。另一方面,当您通过将动画添加到图层来显式地动画化位置时,它将显示而不是隐式动画。

您还可以配置动画看起来它开始前和结束通过改变在fillMode这样后:

anim1.fillMode = kCAFillModeBoth; 

如果加上几行不能解决问题,那么这是别的地方在你的代码。如果是这样,请张贴更多您正在动画或更改“l”图层属性的代码。

+1

谢谢..原来是一个完全无关的问题(drawRect被多次调用 –

相关问题