SCNVector3组件的类型是什么? CGFloat还是Float?

时间:2015-01-10 14:08:03

标签: ios swift scenekit

Apple文档给出了SCNVector3的声明:

  

typedef struct SCNVector3 {CGFloat x,y,z; } SCNVector3;

或者在尝试编写重载函数时:

func * (left: SCNVector3, right: CGFloat) -> SCNVector3 {
    return SCNVector3Make(left.x * right, left.y * right, left.z * right)
}

我得到"无法调用' '使用类型&#34的参数列表;错误。 Aren离开了.x,left.y和left.z应该是CGfloat吗?

如何以及何时决定CGFloat是双倍还是浮动?

1 个答案:

答案 0 :(得分:2)

在iOS 8.1 SDK标头中,SCNVectorX类型基于Float,可以看出 通过命令点击SCNVector3

struct SCNVector3 {
    var x: Float
    var y: Float
    var z: Float
}

func SCNVector3Make(x: Float, y: Float, z: Float) -> SCNVector3

这与使用CGFloat的OS X 10.10 SDK不同。所以文档 似乎是错的。以下在iOS项目中编译:

func * (left: SCNVector3, right: Float) -> SCNVector3 {
    return SCNVector3Make(left.x * right, left.y * right, left.z * right)
}