Cocos2d和iOS:无法理解使用ccBezierConfig控制点的使用

时间:2012-09-14 19:16:07

标签: cocos2d-iphone ccsprite uibezierpath

编辑:如果问题写得不好,请查看视频(3),链接与本页底部相同。

我正在尝试使用 ccBezierConfig 和Cocos2D绘制一条非常简单的贝塞尔曲线。在维基百科上阅读我试图了解一点控制点并找到了这个图像:

http://upload.wikimedia.org/wikipedia/commons/thumb/b/bf/Bezier_2_big.png/240px-Bezier_2_big.png

如果您查看我拍摄图像的维基百科页面,则会有一个很酷的动画。看看here

这是我使用的代码:

        CCSprite *r = [CCSprite spriteWithFile:@"hi.png"];
        r.anchorPoint = CGPointMake(0.5f, 0.5f);
        r.position = CGPointMake(0.0f, 200.0f);

        ccBezierConfig bezier;
        bezier.controlPoint_1 = CGPointMake(0.0f, 200.0f);
        bezier.controlPoint_1 = CGPointMake(180.0f, 330.0f);
        bezier.endPosition = CGPointMake(320.0f,200.0f);

        id bezierForward = [CCBezierBy actionWithDuration:1 bezier:bezier];
        [r runAction:bezierForward];
        [self addChild:r z:0 tag:77];

应用程序在纵向模式下运行,我的推测与1的控制点匹配,而我的代码中的控制点是:

sprite.position should correspond to P0
bezier.controlPoint_1 should correspond to P0 
bezier.controlPoint_2 should correspond to P1
bezier.endPosition  should correspond to P2

我确实试过两种方法。通过设置精灵的位置并不设置它。

我认为该位置应该与controlPoint_1相同,就像维基百科架构1中只有三个点一样。

我得到一个输出我不太安静理解..我制作了一个视频,是私人YouTube视频:

to see the video click here

1 个答案:

答案 0 :(得分:2)

好的,答案很简单......

quadratic Bézier curve 不是cocos2d绘制的。相反,请检查 cubic Bézier curve 的相同Wiki页面。这就是你应该看的东西。

  1. 初始位置是精灵(P0)的位置
  2. 控制点1& 2是P1& P2,分别。
  3. 终点是终点。
  4. 很棒的视频,顺便说一句,我很喜欢xD。


    来自cocos2d库中CCActionInterval.h文件的证据:

    /** An action that moves the target with a cubic Bezier curve by a certain distance.
     */
    @interface CCBezierBy : CCActionInterval <NSCopying>
    {
        ccBezierConfig config;
        CGPoint startPosition;
    }
    

    This link应该可以帮助您直观地构建 cubic Bézier curves ,而不是调整值并运行应用。