激活/停用代码

时间:2017-07-27 20:09:57

标签: ios swift uiimageview uiimage uipangesturerecognizer

尝试获取代码,以便在执行if whiteDotDist < centerRadius - whiteDotRadius时,其下面的所有代码都处于活动状态,当执行下面的代码时,它会再次变为非活动状态,直到再次执行if whiteDotDist < centerRadius - whiteDotRadius为止。有点像循环,所以你必须继续往前走,从中心到小点。很难用电脑解释。更新它给我错误'二元运算符'&lt;'不能应用于'CGFloat'和'Double'类型的操作数

@IBAction func handlePan(recognizer:UIPanGestureRecognizer) {
    let translation = recognizer.translation(in: self.view)
    if let view = recognizer.view {
        view.center = CGPoint(x:view.center.x + translation.x,
                              y:view.center.y + translation.y)
    }
    recognizer.setTranslation(CGPoint.zero, in: self.view)


    let centerRadius = 37.5
    let whiteDotRadius = 23.5 

    let whiteDotDist = hypot(center.center.x - whiteDot.center.x, center.center.y - whiteDot.center.y - whiteDot.center.y)

    if whiteDotDist < centerRadius - whiteDotRadius {
  resetTimer()   }
    if (whiteDot.frame.contains(smallDot.frame) && smallDot.image != nil) {
        addOne += 1
        score.text = "\(addOne)"

        resetTimer()

        timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(SecondViewController.startTimer), userInfo: nil, repeats: true)

        smallDot.center = spawnRandomPosition()  
    }
    }
    }

enter image description here

1 个答案:

答案 0 :(得分:1)

检查以确保:

  1. 所有视图都具有相同的父级(因此它们都在相同的坐标系中)

  2. 框架紧紧围绕着圆圈。将center,whiteDot和smallDot的背景颜色更改为红色并发布图片

  3. 即使你这样做,你的代码也会检查边界是否在彼此内部,所以看起来像smallDot在whiteDot之外(如果它在角落里),但是边界框由whiteDot&#包围39; s frame。

    如果要检查圆圈(非边界框)是否在彼此内部,请获取中心之间的距离,并确保它在(外半径 - 较小的点半径)内。

    伪代码

       let centerRadius = 100 // set this to radius of center circle
       let whiteDotRadius = 10 // set this to whiteDot radius
    
       let whiteDotDist = hypotf(center.center.x - whiteDot.center.x, center.center.y - whiteDot.center.y)
    
       if whiteDotDist < centerRadius - whiteDotRadius {
          // whiteDot is inside center
       }