我有一个条件,看起来像:
if sqrtf(powf(startTouch.x - (touches.first as! UITouch).locationInView(self.view).y, 2) + powf(startTouch.y-(touches.first as! UITouch).locationInView(self.view).y, 2)) > dragThreshold as! Float {
self.drag = false;
}
我收到一个错误消息Binary operator > cannot be applied to two Float operands
。我不明白为什么我不能检查一个浮点数是否大于另一个浮点数。这个错误消息想告诉我什么?
2条答案
按热度按时间wvyml7n51#
CGPoint
的成员是CGFloat
类型,假设您在64位体系结构上,用于存储CGFloat
的本机类型是Double
-尝试将这些计算值视为Double
s(使用sqrt()
和pow()
,而不是Float
版本)...也将dragThreshold
用作Double
nxagd54h2#
使用最新的Xcode 7 beta 4和SpriteKit的函数
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
,我确实把这个大块分成了像这样的小块:这是可行的。基本上为
powf
参数添加了更多的转换,将2更改为2.0一般建议-如果你得到一些奇怪的错误,尝试把你的表达式分解成更小的,以隔离问题。