2011-01-17 8 views
6

Każdy ma jakieś pomysły na konwersję ccc3 na ccc4 lub nawet makra! Obecnie używam pasma CCMotion i wymaga mnie do użycia ccc4, ale nie wiem, co kombinacja sprawia, co kolor! Proszę, każda pomoc będzie doceniona! DziękiCocos2d Jak korzystać z CCC4?

Odpowiedz

12

z 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; 
} 

Dla exampe:

ccColor4b myColor = ccc4(255, 0, 0, 255); tworzy jednolity kolor czerwony

ponownie od 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}; 
} 

Jeśli to nie wystarczy za napisanie własnego konwertera jak ostatnio o ne

EDIT:

Jeśli masz ccColor3B myColor3B i chcesz mieć ccColor4F myColor4F prostu użyć konwertera:

myColor4F c = ccc4FFromccc3B(myColor3B); 

Jeśli chcesz mieć ccColor4B napisać własny konwerter:

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

i używać go tak:

ccColor4B c = ccc4BFromccc3B(myColor); 
+0

Cześć, dzięki za post! Czy uważasz, że możesz wyjaśnić, jak używać opublikowanego przez siebie kodu? Dzięki – iDeveloper

+0

Edytowałem odpowiedź – Andrew

+0

Okay im bardzo przepraszam, ale nie mogę tego dostać. Aby wyjaśnić jeszcze raz, w zasadzie używam CCMotionStreak i wymaga to użycia ccc4 i chcę przekonwertować mój kolor ccc3 na ccc4. Jeśli to możliwe, możesz zrobić projekt i opublikować kod online? Po prostu wskazówka, którą próbowałem to zrobić: CCMotionStreak * streak = [CCMotionStreak streakWithFade: 2 minSeg: 0 image: @ "Stars.png" width: 32 length: 32 color: ccc4FFromccc3B (255,0,0)]; ale dało 3 błędy! Jeszcze raz dziękuję. – iDeveloper

1

Dla każdego, mającego ten sam problem z CocosSharp (portu # Xamarin C Cocos2d):

przekonwertować CCColor3B do CCColor4F, można przekazać w CCColor3B jako argument konstruktora CCColor4F. Na przykład:

var color = new CCColor4F (CCColor3B.Red); 

CCColor4B nie posiada konstruktora z CCColor3B jako argument, więc trzeba przejść w poszczególnych wartości dla czerwonego, zielonego i niebieskiego, co następuje:

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

Lubię tworzyć metody rozszerzenie do hermetyzacji powyższego, w następujący sposób:

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); 
    } 
} 

Więc można następnie przeprowadzić konwersji przy użyciu następujących:

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