2015-07-09 3 views
-2

Я пишу функцию, которая берет CGPoint и CGFloat, тогда она берет оба эти значения, а затем вычитает их в Swift. У меня возникают проблемы, когда я пытаюсь использовать Double() для CGFloat и CGPoint. Я попытался с помощью других преобразований значений, но независимо от того, что я пытаюсь преобразовать CGPoints и CGFloats, я всегда получаю сообщение об ошибке сказав, что я не могу применить «-» к операндам Double, CGFloat, Int и т.д ..Невозможно преобразовать CGPoint или CGFloat в Double in Swift

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

хорошо вы вычитание CGPoint из двойных. Вы говорите (2, 3) - 5. Это ничего не значит. – rocky

ответ

4

Вы пытаетесь сделать арифметику на struct и float ... это не сработает.

Если вы пытаетесь найти разницу между х и у компонентов, вы могли бы сделать:

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

Если вы пытаетесь найти расстояние между двумя точками (sprite.position и местоположения) вы бы использовать расстояние формулу: 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) 

Если вы просто пытаетесь найти разницу между компонентами у:

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

Отнимите у местоположения

return position - location.y 
Смежные вопросы