Macos 如何将NSColor转换为ccColor3B
如何将NSColor转换为ccColor3B?NSColor可以在任何颜色空间中使用,因此redComponent等有时不起作用。我不确定它是否起作用,但您可以尝试:Macos 如何将NSColor转换为ccColor3B,macos,cocos2d-iphone,Macos,Cocos2d Iphone,如何将NSColor转换为ccColor3B?NSColor可以在任何颜色空间中使用,因此redComponent等有时不起作用。我不确定它是否起作用,但您可以尝试: NSColor *color = [NSColor redColor]; CGFloat red, green, blue; [color getRed:&red green:&green blue:&blue alpha:NULL]; ccColor3B cccolo
NSColor *color = [NSColor redColor];
CGFloat red, green, blue;
[color getRed:&red green:&green blue:&blue alpha:NULL];
ccColor3B cccolor = {red / 255.0f, green / 255.0f, blue / 255.0f};
你猜怎么着,我在厨房里发现了这个 无论如何,谢谢;-) 所以在我的例子中,我现在使用这个:
NSColor *colorConverted = [self._color colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
if (colorConverted) {
self.labelFormac.color = ccc3(colorConverted.redComponent * 255.0f, colorConverted.greenComponent * 255.0f, colorConverted.blueComponent * 255.0f);
}
这是不正确的,ccColor3B需要GLubyte,但您正在给float。您需要ccColor4F或将浮点转换为字节0-255。您的将始终返回{0,0,0}。要生成GLubyte,可以除以255。cccolor={red/255,green/255,blue/255}@ViktorLexington谢谢!很高兴知道。我会编辑我的答案,这也不好,现在你用double代替float,这比你需要的要多。我将把它编辑为float。255.0是一个双精度文本,这意味着red/255.0将被转换为双精度文本,然后返回到GLubyte(char)。double具有双精度浮点运算,在32位系统上使用2个寄存器时,计算需要更多时间。所以使用float-literal:255.0f。如果你不想接受我的,请自己编辑。@ViktorLexington哦,我明白了。。。我有没有阻止你编辑我的答案?对不起,如果是这样的话。我认为最公正的方式是为你发表你自己的答案,因为你显然比我对这个问题有更深的理解,我会删除我的答案
NSColor *colorConverted = [self._color colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
if (colorConverted) {
self.labelFormac.color = ccc3(colorConverted.redComponent * 255.0f, colorConverted.greenComponent * 255.0f, colorConverted.blueComponent * 255.0f);
}