Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中为我的旋转圆生成if语句?_Ios_Swift_Touchesmoved - Fatal编程技术网

Ios 如何在Swift中为我的旋转圆生成if语句?

Ios 如何在Swift中为我的旋转圆生成if语句?,ios,swift,touchesmoved,Ios,Swift,Touchesmoved,我有一个圆圈,当用户的手指在节点上旋转时,它可以左右旋转360度。我需要弄清楚如何生成if语句,这样当它向左旋转时,我可以添加一个动作,当它向右旋转时,我可以添加另一个动作。以下是我的代码: override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) { for touch in touches { let location = touch.locationInNo

我有一个圆圈,当用户的手指在节点上旋转时,它可以左右旋转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

        } 
         } 
          }
覆盖功能触摸移动(触摸:设置,带事件:UIEvent?){
接触{
let location=touch.locationInNode(自)
设node=self.nodeAtPoint(位置)
如果node.name==“rotateCrcle”{
//当节点上有一个手指时,允许用户像旋钮一样旋转圆圈。
设dy=circle.position.y-location.y
设dx=circle.position.x-location.x
设角度2=atan2(dy,dx)
圆周旋转=角度2
} 
} 
}

一种方法是将
角度2
值与上一次触摸的角度值进行比较。然后可以创建一个
if
语句,根据旋转方向执行所需操作

一些伪代码:

在你们班:

var previousAngle:Double
触摸移动中

let delta = (angle2 - previousAngle) mod M_PI
if delta > 0 {
    // do action 1
}
else {
    // do action 2
}
previousAngle = angle2

您需要一些逻辑来检查这是否是第一次触摸。在这种情况下,您还没有以前的角度,因此您不想采取行动。

一种方法是将角度2值与以前触摸的角度值进行比较。然后可以创建一个
if
语句,根据旋转方向执行所需操作

一些伪代码:

在你们班:

var previousAngle:Double
触摸移动中

let delta = (angle2 - previousAngle) mod M_PI
if delta > 0 {
    // do action 1
}
else {
    // do action 2
}
previousAngle = angle2

您需要一些逻辑来检查这是否是第一次触摸。在这种情况下,您还没有以前的角度,所以你不想采取行动。

我需要它,这样如果用户向右旋转,我可以添加一个行动,如果用户向左旋转,我可以添加另一个行动。我需要它,这样如果用户向右旋转,我可以添加一个行动,如果用户向左旋转,我可以添加另一个行动。是的,我必须添加到改变一些事情,它最终会起作用。非常感谢。是的,我添加了一些东西来改变周围的情况,结果它起了作用。非常感谢。