2D анимация полигонов в iPhone - PullRequest
0 голосов
/ 19 августа 2011

Я не уверен, что «двумерная многоугольная анимация» - это правильный термин, которого я пытаюсь достичь, но в основном я хочу анимацию, похожую на трехмерный морфинг, но с двухмерными многоугольниками, чтобы у меня было несколько «кадров» из одного и того же многоугольника, где вершины находятся в разных местах и ​​интерполируются между ними для достижения анимации.

Прежде чем я сам начну это реализовывать, я хочу знать, есть ли какая-нибудь библиотека или что-то для этого в iOS. По крайней мере в Cocos2D я не нашел такой возможности.

Хороший инструмент - также редактор для определения полигонов, который экспортирует в XML или что-то еще, чтобы легко импортировать его в мое приложение. Для этого должно быть профессиональное программное обеспечение для редактирования, верно? Это должно быть действительно распространенной вещью? Я пытался гуглить, но мне не хватает правильных ключевых слов.

Ответы [ 2 ]

1 голос
/ 10 октября 2011

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);
1 голос
/ 19 августа 2011

Core Animation может это сделать - входит в комплект SDK.Я думаю, вам нужно посмотреть на CAShapeLayer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...