无法将CGPoint或CGFloat转换为Swift中的Double

时间:2015-07-09 21:56:13

标签: ios swift sprite-kit type-conversion

我正在编写一个接受CGPoint和CGFloat的函数,然后它接受这两个值,然后在Swift中减去它们。每当我尝试将Double()用于CGFloat和CGPoint时,我都遇到了麻烦。我尝试过使用其他值转换,但无论我尝试将CGPoints和CGFloats转换为什么,我总是会收到错误说,我不能应用" - "到Double,CGFloat,Int等的操作数。

    func findTheDifference(location: CGPoint) -> Double {
    let position = sprite.position.y
    let difference = position - location
    return difference
    }

2 个答案:

答案 0 :(得分:5)

你试图对一个结构和一个浮点数进行算术运算......这样做不会起作用。

如果你试图找到x和y组件之间的差异,你会这样做:

func findTheDifference(location: CGPoint) -> Double {
    return location.y - location.x
}

如果你试图找到两点之间的距离(精灵位置和位置),你可以使用距离公式:http://www.purplemath.com/modules/distform.htm

func findTheDistance(point1: CGPoint, point2: CGPoint) -> Double {
    let xDist = Double(point2.x - point1.x)
    let yDist = Double(point2.y - point1.y)
    return sqrt((xDist * xDist) + (yDist * yDist))
}
let location = // get location
let distance = findTheDistance(sprite.position, location)

如果您只是想找到y组件之间的差异:

func findTheDifference(location: CGPoint) -> Double {
    return Double(sprite.position.y - location.y)
}

答案 1 :(得分:0)

减去位置的y

return position - location.y