-2

所以我用draw方法创建了一个圆:

glLineWidth(16);
glColor4ub(0, 255, 0, 255);
drawCircle( ccp(s.width/2,  s.height/2), 100, 0, 10, NO);

我想知道是否可以将此形状转换为带有动画的矩形形状。谢谢你 。对不起我的英语我是法国人:/

4

2 回答 2

2

为简单起见,我将使用 4 条三次贝塞尔曲线 - 每个圆的象限一条曲线。(这不是一个完美的圆,但也不是一个 100 段的圆!)然后,使用schedule:cocos2d 提供的功能,我会随着时间的推移逐渐移动每条曲线的控制点,直到它们与曲线的起点终点垂直或水平对齐. 这会将曲线变成 4 条直线:一个矩形!

嗯,确切地说是一个正方形。您还必须移动所有 4 条曲线的起点终点以形成一个不是正方形的矩形,但您明白我希望的意思吗?

有关其他信息,请参阅这些链接:

编辑:添加图像

贝塞尔圆

d = d 值从以下公式计算得出: http ://www.cgafaq.info/wiki/Bezier_Circle

start control 1 control 2end是在 cocos2d 中制作三次贝塞尔曲线所需的 4 个点。

于 2012-04-20T18:01:28.367 回答
0

您将不得不为此编写代码。

例如,您可以在圆周围创建多个控制点。这些控制点中的每一个都可以由 3 个点组成。两个点代表圆上的两个点,一个点控制在两点之间绘制的线的曲线。现在为曲线上控制点之间的运动设置动画,使它们移动成为矩形上的控制点,同时为第三个控制点的运动设置动画,使边缘从曲线变为直线。

于 2012-04-20T09:47:11.397 回答