我的条件如下:
btn1
我收到的错误是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;
}
。我无法理解为什么我无法检查浮子是否大于另一个浮子。这个错误试图告诉我什么?
答案 0 :(得分:2)
CGPoint
的成员属于CGFloat
类型,假设您使用的是64位架构,则用于存储CGFloat
的本机类型为Double
- 尝试将这些计算值视为Double
s(使用sqrt()
和pow()
而不是Float
版本)...使用dragThreshold
作为Double
以及
答案 1 :(得分:1)
使用最新的Xcode 7 beta 4和SpriteKit的函数override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
我确实将这一大块打破了这样的小块:
let dragThreshold: Int = 1
let startTouch = CGPointZero
let pow1 = powf(Float(startTouch.x - touches!.first!.locationInView(self.view).y), 2.0)
let pow2 = powf(Float(startTouch.y-touches!.first!.locationInView(self.view).y), 2.0)
let sq = sqrtf(pow1 + pow2)
if sq > Float(dragThreshold) {
self.drag = false;
}
这很有效。基本上为powf
参数添加了更多转换,更改为2到2.0
一般建议 - 如果您遇到一些奇怪的错误,请尝试将您的表达式分解为较小的错误以隔离问题。