Warm tip: This article is reproduced from serverfault.com, please click

swift-是否可以通过UITapGestureRecognizer获得多个SKNode?

(swift - Is it possible to get multiple SKNodes with UITapGestureRecognizer?)

发布于 2020-12-02 19:19:31

我目前在同一个SKScene上有多个球。我处理GameScene中的所有触摸和手势。下面是我用来检测哪个节点被触摸的代码,它起作用。

我不确定的是,由于在实际设备上使用touchesMoved时总是有一些touchesMoved,因此是否有可能多个节点同时接收拍子?如果是这样,我显然将需要以不同的方式编写我的代码。

@objc func tappedView(_ sender:UITapGestureRecognizer) {

    if sender.state == .ended{
        let point : CGPoint = sender.location(in: self.view)
        var post = sender.location(in: sender.view)
        post = self.convertPoint(fromView: post)
        
        if let touchNode = self.atPoint(post) as? MyBall{
            //the declaration below is just so I have somewhere to stop in the debugger
            var x = 1 
        }
     }
}
Questioner
LuisC329
Viewed
11
Knight0fDragon 2020-12-05 05:08:13

用于nodes(at:)在一个点上获取多个节点。

@objc func tappedView(_ sender:UITapGestureRecognizer) {

    if sender.state == .ended{
        let point : CGPoint = sender.location(in: self.view)
        var post = sender.location(in: sender.view)
        post = self.convertPoint(fromView: post)
        

        for touchNode in self.nodes(at:post){
            //the declaration below is just so I have somewhere to stop in the debugger
            var x = 1 
        }
     }
}

https://developer.apple.com/documentation/spritekit/sknode/1483072-nodes