iPhone中的2D多边形动画

时间:2011-08-19 05:49:36

标签: iphone animation polygon

我不确定“2d多边形动画”是否是我想要实现的正确术语,但基本上我想要类似于3D变形的动画,但是使用2d多边形,这样我有多个相同多边形的“帧”顶点位于不同的位置,并在它们之间进行插值以实现动画。

在我开始自己实现它之前,我想知道是否有一些库或某些东西可以在iOS中实现。至少在Cocos2D中我没有找到这样的功能。

定义多边形的编辑器也是一个不错的工具,它可以导出到XML或其他东西,以便轻松地将其导入我的应用程序。应该有一个专业的编辑软件来做到这一点,对吧?这应该是一个非常普遍的事情?我试图谷歌,但我想我错过了正确的关键字。

2 个答案:

答案 0 :(得分:1)

核心动画可以做到 - 包含在SDK中。我想你需要看一下CAShapeLayer。

答案 1 :(得分:1)

CAShapeLayer会这样做。您要做的是创建图层并将其path属性指定为path1,它是一个CGPathRef对象,其创建方式如下:

// four-sided polygon
CGMutablePathRef path1 = CGPathCreateMutable(); 
CGPathMoveToPoint(path1, NULL, 160, 290);
CGPathAddLineToPoint(path1, NULL, 170, 300);
CGPathAddLineToPoint(path1, NULL, 160, 310);
CGPathAddLineToPoint(path1, NULL, 150, 300);

CAShapeLayer* bgPoly = [CAShapeLayer layer];
bgPoly.path = path1;
bgPoly.backgroundColor = [UIColor blueColor].CGColor;

CGPathRelease(path1);

然后将多边形path更改为另一个CGPathRef对象path2,您将获得所需内容:

// morphs to a six-sided polygon
CGMutablePathRef path2 = CGPathCreateMutable(); 
CGPathMoveToPoint(path2, NULL, 160, 290);
CGPathAddLineToPoint(path2, NULL, 170, 300);
CGPathAddLineToPoint(path2, NULL, 170, 300);
CGPathAddLineToPoint(path2, NULL, 160, 310);
CGPathAddLineToPoint(path2, NULL, 150, 300);
CGPathAddLineToPoint(path2, NULL, 150, 300);

bgPoly.path = path2;

CGPathRelease(path2);