31 votes

Sprite Kit - SKShapeNode Path ne dessine pas de quadruple courbe

Je me suis plongé dans le nouveau Sprite Kit d'Apple, et je l'utilise depuis un moment maintenant. Cependant, j'ai rencontré un problème lorsque j'ai essayé de dessiner une trajectoire incurvée pour un SKShapeNode . Il semble dessiner une ligne droite à la place.

Voici un exemple très simple du problème que j'ai rencontré - j'ai essayé de dessiner une CGPath pour un SKShapeNode :

    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, 0, 0);
    CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);
    CGPathAddLineToPoint(path, NULL, 50, -100);
    CGPathCloseSubpath(path);

    SKShapeNode *shape = [[SKShapeNode alloc]init];
    shape.path = path;

    [self addChild:shape];

    CGPathRelease(path);

Voici mon dessin ASCII de ce qu'il fait (Désolé, je n'ai pas encore la réputation suffisante pour poster une image réelle) :

---------------------------------------------------------------------------------
|          EXPECTED RESULT              |            ACTUAL RESULT              |
---------------------------------------------------------------------------------
|                                       |                                       |
|             __----__                  |                                       |
|            /        \  <- Curve       |                ?                      |
|           /          \                |           ____________                |
|           \          /                |           \          /                |
|            \        /                 |            \        /                 |
|             \      /                  |             \      /                  |
|              \    /                   |              \    /                   |
|               \  /                    |               \  /                    |
|                \/                     |                \/                     |
---------------------------------------------------------------------------------

Comme vous pouvez le voir, cette ligne de code ne dessine pas la courbe que je souhaite :

CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);

J'ai essayé d'utiliser CGPathAddArcToPoint(...) qui fonctionne et serait un bon substitut dans cet exemple. Cependant, pour mes besoins réels, je dois être capable de dessiner une courbe quadruple.

Le CGPath semble dessiner tout ce qui est approprié, à l'exception de CGPathAddQuadCurveToPoint(...) et aussi, CGPathAddCurveToPoint(...) - où ils dessinent simplement une ligne droite entre les points à la place.

Quelqu'un a-t-il une idée de la nature du problème ? Ou est-ce un bug de Sprite Kit ?

2voto

OWashe Points 11

Ce "y" devrait être la hauteur de votre courbe, essayez de lui donner une valeur non nulle. En donnant une coordonnée, il ne peut pas savoir à quel point la courbe doit être raide. C'est donc la hauteur

CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 30);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X