我有这个圆圈,当用户将手指放在节点上并且正在旋转时,它可以向左和向右旋转360度。我需要弄清楚如何制作一个if语句,所以当它向左旋转时我可以添加一个动作,当它向右旋转时我可以添加另一个动作。这是我的代码:
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch in touches {
let location = touch.locationInNode(self)
let node = self.nodeAtPoint(location)
if node.name == "rotatecircle" {
//lets user rotate circle like a knob when there is one finger on node.
let dy = circle.position.y - location.y
let dx = circle.position.x - location.x
let angle2 = atan2(dy, dx)
circle.zRotation = angle2
}
}
}
答案 0 :(得分:2)
一种方法是将angle2
值与前一次触摸的角度值进行比较。然后,您可以创建一个if
语句,根据轮换方向执行您想要的操作。
一些伪代码:
在你班上:
var previousAngle:Double
在touchesMoved
let delta = (angle2 - previousAngle) mod M_PI
if delta > 0 {
// do action 1
}
else {
// do action 2
}
previousAngle = angle2
您需要一些逻辑来检查这是否是第一次触摸。在这种情况下,你还没有previousAngle
,所以你不想采取行动。