2011-01-17 17 views
6

¡Cualquiera tiene alguna idea sobre cómo convertir ccc3 a ccc4 o incluso solo una macro! Actualmente estoy usando CCMotion streak y me requiere usar ccc4, pero no sé qué combinación hace qué color. ¡Por favor, cualquier ayuda sería apreciada! Gracias Cocos2d ¿Cómo usar CCC4?

Respuesta

12

de ccTypes.h

typedef struct _ccColor4B 
{ 
GLubyte r; 
GLubyte g; 
GLubyte b; 
GLubyte a; 
} ccColor4B; 
//! helper macro that creates an ccColor4B type 
static inline ccColor4B 
ccc4(const GLubyte r, const GLubyte g, const GLubyte b, const GLubyte o) 
{ 
ccColor4B c = {r, g, b, o}; 
return c; 
} 

Para exampe:

ccColor4b myColor = ccc4(255, 0, 0, 255); crea un color rojo sólido

nuevo desde ccTypes.h

/** Returns a ccColor4F from a ccColor3B. Alpha will be 1. 
@since v0.99.1 
*/ 
static inline ccColor4F ccc4FFromccc3B(ccColor3B c) 
{ 
return (ccColor4F){c.r/255.f, c.g/255.f, c.b/255.f, 1.f}; 
} 

Si no es suficiente para que escribas tu propio convertidor como el último o ne

EDIT:

Si tiene ccColor3B myColor3B y que desea tener ccColor4F myColor4F simplemente utilizar el convertidor:

myColor4F c = ccc4FFromccc3B(myColor3B); 

Si usted quiere tener ccColor4B escribir su propio conversor:

static inline ccColor4B ccc4BFromccc3B(ccColor3B c) 
{ 
return (ccColor4F){c.r, c.g, c.b, 255}; 
} 

y úsala así:

ccColor4B c = ccc4BFromccc3B(myColor); 
+0

Hola, gracias por la publicación! ¿Crees que podrías explicarme cómo usar el código que has publicado? Gracias – iDeveloper

+0

He editado la respuesta – Andrew

+0

Bueno, lo siento muchísimo, pero aún no lo entiendo. Solo para explicarlo una vez más, básicamente estoy usando CCMotionStreak y me requiere usar ccc4 y quiero convertir mi color ccc3 en ccc4. Si es posible, ¿podría hacer un proyecto y publicar el código en línea? Solo un consejo. Intenté hacer esto: CCMotionStreak * streak = [CCMotionStreak streakWithFade: 2 minSeg: 0 image: @ "Stars.png" width: 32 length: 32 color: ccc4FFromccc3B (255,0,0)]; pero dio 3 errores! Gracias una vez más. – iDeveloper

1

Para cualquier persona que tenga el mismo problema con CocosSharp (el Xamarin C# puerto de Cocos2D):

Para convertir un CCColor3B a un CCColor4F, se puede pasar en el CCColor3B como un argumento al constructor de CCColor4F. Por ejemplo:

var color = new CCColor4F (CCColor3B.Red); 

CCColor4B no tiene un constructor con CCColor3B como argumento, por lo que tiene que pasar en los valores individuales para el rojo, verde y azul, de la siguiente manera:

var sourceColor = CCColor3B.Red;  
var color = new CCColor4B (sourceColor.R. sourceColor.G, sourceColor.B); 

me gusta crear métodos de extensión para encapsular lo anterior, de la siguiente manera:

public static class ColorExtensions 
{ 
    public static CCColor4F ToColor4F(this CCColor3B sourceColor) 
    { 
     return new CCColor4F (sourceColor); 
    } 

    public static CCColor4B ToColor4B(this CCColor3B sourceColor) 
    { 
     return new CCColor4B (sourceColor.R, sourceColor.G, sourceColor.B); 
    } 
} 

modo que lo pueda realizar conversiones utilizando la siguiente:

var bColor = CCColor3B.ToColor4B(); 
var fColor = CCColor3B.ToColor4F();