iPhone开发 - 基本绘图和动画问题

时间:2009-08-17 11:27:48

标签: iphone animation drawing

我有一个案例,我正在绘制形状,例如三角形(A,B,C点)。现在我想要设置它的动画,使得A,B,C点朝向X,Y,Z点移动。(让我们说按钮点击)

我在自定义视图中使用drawRect:方法进行绘制。我不希望我的视图移动,我宁愿我的绘图移动(因为我有多个绘图)。

任何指针?任何相关文章?

此致 穆斯塔法

1 个答案:

答案 0 :(得分:1)

核心动画是这类事物的一个很好的解决方案。您有CAShapeLayer,它允许您根据路径绘制形状,并且您可以使用基本动画或关键帧动画进行动画处理。您可以在按钮点击中执行以下操作:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position"];
[animation setFromValue:[NSValue valueWithCGPoint:CGPointMake(0.0, 0.0)]];
[animation setToValue:[NSValue valueWithCGPoint:CGPointMake(320.0, 480.0)]];
[animation setDuration:2.0f];
[shapeLayer addAnimation:animation forKey:@"positionAnimation"];

这将在两秒的过程中将图层从点0.0,0.0(左上角)动画到320.0,480.0(右下角)。将动画添加到图层时,它将立即开始播放。如果您想要旋转动画(不确定来自帖子),您可以这样做:

CABasicAnimation *rotationAnimation;
rotationAnimation = [CABasicAnimation 
             animationWithKeyPath:@"transform.rotation.z"];

[rotationAnimation setFromValue:DegreesToNumber(0)];
[rotationAnimation setToValue:DegreesToNumber(360)];
[rotationAnimation setDuration:2.0f];
[rotationAnimation setRepeatCount:10000]; // keep spinning

[shapeLayer addAnimation:rotationAnimation forKey:@"rotate"];

DegreesToNumber是一个辅助函数,它将度数转换为弧度并返回一个NSNumber对象:

CGFloat DegreesToRadians(CGFloat degrees)
{
    return degrees * M_PI / 180;
}

NSNumber* DegreesToNumber(CGFloat degrees)
{
    return [NSNumber numberWithFloat:
            DegreesToRadians(degrees)];
}

网上有很多关于核心动画的文章,但这应该可以让你开始。如果您需要澄清,请告诉我。