我不确定“2d多边形动画”是否是我想要实现的正确术语,但基本上我想要类似于3D变形的动画,但是使用2d多边形,这样我有多个相同多边形的“帧”顶点位于不同的位置,并在它们之间进行插值以实现动画。
在我开始自己实现它之前,我想知道是否有一些库或某些东西可以在iOS中实现。至少在Cocos2D中我没有找到这样的功能。
定义多边形的编辑器也是一个不错的工具,它可以导出到XML或其他东西,以便轻松地将其导入我的应用程序。应该有一个专业的编辑软件来做到这一点,对吧?这应该是一个非常普遍的事情?我试图谷歌,但我想我错过了正确的关键字。
答案 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);