Cocos2d Как использовать CCC4? - PullRequest
6 голосов
/ 17 января 2011

У любого есть идеи, как конвертировать ccc3 в ccc4 или даже просто макрос!В настоящее время я использую полосу CCMotion, и она требует от меня использования ccc4, но я не знаю, какая комбинация дает какой цвет!Пожалуйста, любая помощь будет оценена!Спасибо

Ответы [ 2 ]

12 голосов
/ 18 января 2011

из 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;
}

Для экзамена:

ccColor4b myColor = ccc4(255, 0, 0, 255); создает сплошной красный цвет

Снова из 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};
}

Если вам недостаточно написать свой собственный конвертер, как последний

EDIT:

Если у вас ccColor3B myColor3B и вы хотите ccColor4F myColor4F, просто используйте конвертер:

myColor4F c = ccc4FFromccc3B(myColor3B);

Если вы хотите иметь ccColor4B, напишите свой собственный конвертер:

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

и используйте его так:

ccColor4B c = ccc4BFromccc3B(myColor);
1 голос
/ 21 февраля 2015

Для тех, у кого есть такая же проблема с CocosSharp (порт Xamarin C # Cocos2D):

Чтобы преобразовать CCColor3B в CCColor4F, вы можете передать CCColor3B в качестве аргумента конструктору CCColor4F.Например:

var color = new CCColor4F (CCColor3B.Red);

CCColor4B не имеет конструктора с CCColor3B в качестве аргумента, поэтому необходимо передать отдельные значения для красного, зеленого и синего следующим образом:

var sourceColor = CCColor3B.Red;    
var color = new CCColor4B (sourceColor.R. sourceColor.G, sourceColor.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);
    }
}

Таким образом, вы можете выполнять преобразования, используя следующее:

var bColor = CCColor3B.ToColor4B();
var fColor = CCColor3B.ToColor4F();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...