首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >类型“NSColor”没有成员“black”

类型“NSColor”没有成员“black”
EN

Stack Overflow用户
提问于 2018-02-08 15:36:13
回答 2查看 491关注 0票数 2

我正在使用Xcode9.2中的Swift和SceneKit。我一直在使用NSColor对几何体应用颜色,但是突然(逐渐地)我的大多数颜色都变成了NSColor没有成员.colorname的类型。就像我的游戏编译并运行得很好,然后在下一次编译时,我用.cyan得到了一个错误。我把它改成了.black,然后它就运行了。然后另一种颜色出现错误,然后大多数颜色都出现错误。

下面是一个例子:

代码语言:javascript
复制
node.geometry?.firstMaterial?.diffuse.contents = NSColor.black

我剩下的选择是:

.blue.green.int.rawValue.red.yellow

所有的颜色都怎么了?

编辑:我清理了项目,所有的编译都没有警告,但我仍然只有4种颜色,它们都呈现为灰色。我将节点的漫反射颜色打印到控制台,它们读取正确。

我还导入了Cocoa框架。

编辑:我发现了我的错误。

在执行查找和替换时,我不小心将枚举的名称替换为NSColor。这就是SKColor成功的原因,因为它是一个新名字。

我太尴尬了。

EN

回答 2

Stack Overflow用户

发布于 2018-02-08 16:36:52

您可以使用:

代码语言:javascript
复制
node.geometry?.firstMaterial?.diffuse.contents = NSColor(srgbRed: 0, green: 0, blue: 0, alpha: 1.0)

通过这种方式,您可以使用自己的RGBs值创建一种颜色,因此通过这种方式可以获得黑色。最后一个参数alpha是不透明度的值,它需要为100才能看到颜色

票数 1
EN

Stack Overflow用户

发布于 2018-02-08 19:40:57

在您的情况下,更好的方法是使用以下语法:

代码语言:javascript
复制
NSColor(calibratedRed: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)

在iOS中,您应该使用如下语法:

代码语言:javascript
复制
cube.firstMaterial?.diffuse.contents = UIColor(red: 0.3, green: 0.45, blue: 0.75, alpha: 1.0)

在macOS中,语法如下所示:

代码语言:javascript
复制
sphere.firstMaterial?.reflective.contents = NSColor(calibratedRed: 99.0, green: 0.0, blue: 0.0, alpha: 1.0)

请记住,alpha (也称为不透明度),指定为0.0-1.0之间的值。小于0的Alpha值被解释为0.0,高于1.0的值被解释为1.0。

当然,您可以显式指定色彩空间(如sRGB):

代码语言:javascript
复制
init(srgbRed: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48679988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档