2010-01-29 4 views
0

Je voudrais dessiner des formes 2d comme celui-ci dans une application iPhone:« biseautés » Formes avec cocos2d

alt text http://www.shaggyfrog.com/junk/beveled-circle.jpg

J'ai posé une question similaire here pour voir si je pouvais le faire facilement avec Quartz, mais n'a pas eu de solution. J'ai donc pensé que je pourrais tirer profit d'une bibliothèque 2d existante, et j'ai ensuite pensé à cocos2d. Le but est de dessiner dynamiquement ces types de formes biseautées, c'est-à-dire en utilisant des couleurs arbitraires, et éventuellement en mettant en surbrillance le biseautage sur une position arbitraire.

Est-ce possible avec cocos2d?

Répondre

2

En ce qui concerne ma connaissance de cocos2d, cocos2d ne vous permettra pas de le faire d'une autre manière que OpenGL vous le permettrait. Cocos2d utilise OpenGL sous le capot. Cocos2d est livré avec aucun ensemble intégré pour créer de tels graphiques.

Puisque le biseau est utilisé pour créer un effet 3D, vous ne devriez peut-être pas le simuler avec un dessin 2D, mais plutôt utiliser une bibliothèque de dessin 3D? OpenGL serait certainement capable de dessiner de telles formes. Cocos2d se concentre sur le dessin 2D au lieu de 3D.

Je ne suis pas sûr si Cocos2D permettrait à un objet personnalisé de dessiner 3D en utilisant le mécanisme OpenGL sous-jacent. Je n'ai jamais essayé.

Ne serait-il pas plutôt plus facile de créer l'image dans photoshop et d'ajuster les couleurs de façon dynamique? Je ne suis pas sûr de ce que vous essayez de faire.
Vous pouvez également créer une forme de masque avec un "effet de biseau" transparent et l'échelle avec l'image dont vous avez besoin pour briller?

1

En dehors de l'effet de biseau, si vous voulez "coloriser" chaque demi-cercle, vous pouvez utiliser [sprite setColor:] ou sprite.color = CCC3 (r, g, b)

CCSprite *sprite = [CCSprite spriteWithSpriteSheet:sheet rect:CGRectMake(32 * idx,0,128,32)]; 
[sprite setColor:ccc3(CCRANDOM_0_1()*255,CCRANDOM_0_1()*255,CCRANDOM_0_1()*255)]; 

Vous devez concevoir un «demi-cercle blanc» avec des bords biseautés (gris). Ensuite, vous pouvez faire des sprites et les colorier séparément.