繁体   English   中英

如何检测iPhone屏幕右侧或左侧是否有水龙头?

[英]How do I detect if there is a tap on right or left side of the iPhone screen?

我是iOS领域的新手,如果我遗漏了一些细节或不够清楚,请原谅我。 我在底部的屏幕上放了一个球,想知道如何在用户轻按iPhone左半部时使其向左移动,以及在用户轻击iPhone右半部时向右移动。

我要使工作的代码是这样的:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    for touch: AnyObject in touches {
        let location = touch.locationOfTouch(<#touchIndex: Int#>, inView: <#UIView?#>)
    }


    ball!.physicsBody!.applyImpulse(CGVectorMake(25.0, 40.0))
}

我知道缺少代码,但是我似乎无法理解如何处理它。 我这样做对吗? 非常感谢您的帮助。

所以我确实弄清楚了代码。 这是我所做的:

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    var touch = touches.first as! UITouch
    var point = touch.locationInView(self.view)

    if point.x < size.width / 2 {

        ball!.physicsBody!.applyImpulse(CGVectorMake(-5.0, 10.0))

    }

    else {

        ball!.physicsBody!.applyImpulse(CGVectorMake(5.0, 10.0))

    }

}

现在,我遇到了另一个问题,它可能没有我想解决的那么复杂。 因此,最初,当应用启动时,球是静止的,如果向左轻击则为(-5,10)方向,向右轻击则为(5,10)。 问题是,当我向右点击时,当应用启动时,它朝(5,10)方向运行,但朝左方向却不相同。 如果我在应用程序启动时先轻按右侧,并且球开始朝(5,10)方向移动,我希望它向前移动时与开始时完全相同的方向向左移动,几乎像之字形格式。 类似于/ V格式的东西,如果要以纵向视图查看,则线条将是左右移动。 我希望这是有道理的:)

我会继续尝试弄清楚,希望您阅读时能弄清楚。

我也很新,所以我不知道更高级的解决方案。

我要做的是在屏幕中央绘制/添加一条线。 例如,我将使用SKSpriteNode并将其放置在屏幕的中央。

 var middleLine = SKSpriteNode(imageNamed: "CenterLine")
 middleLine.alpha = 0 //you don't want the line to show
 middleLine.position = CGPoint(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame))

这会将线精灵放置在屏幕的中央。 然后,在touchesBegan内,我将做一个if语句,说明抽头是否小于中心线的y坐标或更大。 如果小于,则分接头将在左侧,如果大于y坐标,则分接头将在右侧。

您需要使其返回用户点击的触摸位置才能进行比较。

编辑:为了更容易,您甚至不必添加精灵,只需将触摸x和y与CGRectGetMidX(self.frame)和CGRectGetMidY(self.frame)比较

我在判断是否有物体离开屏幕时在游戏中使用了它。 我比较了它的x,y坐标是否大于框架内的坐标(或小于)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM