Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何将NSColor转换为ccColor3B_Macos_Cocos2d Iphone - Fatal编程技术网

Macos 如何将NSColor转换为ccColor3B

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转换为ccColor3B?NSColor可以在任何颜色空间中使用,因此redComponent等有时不起作用。

我不确定它是否起作用,但您可以尝试:

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