大佬教程收集整理的这篇文章主要介绍了swift – 如何检测触摸了哪个SKSpriteNode,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
var sprites: [[SKSpriteNode]] = [[SKSpriteNode(imagenamed: "a"),SKSpriteNode(imagenamed: "b")],[SKSpriteNode(imagenamed: "c"),SKSpriteNode(imagenamed: "d")]]
想法是识别spriteNode,然后将其替换为其他精灵或更改颜色,但我不知道如何使用这个spriteNodes矩阵,我想第一步它识别精灵.
要实现这一点,首先必须定义一个名为ButtonDelegate的协议.该协议定义了一个要求,该要求声明任何符合要求的类必须实现一个名为printButtonsName(_ :)的方法:
protocol ButtonDelegate:class { func printButtonsName(name:string?) }
这是将在您的GameSceneclass中实现的方法,但是从button的touchesBegan中调用.此外,此方法将用于将按钮的名称传递给其委托(场景),因此您将始终知道点击了哪个按钮.
接下来是按钮类本身. Button可能如下所示:
class Button : SKSpriteNode{ weak var delegate:ButtonDelegate? init(name:string){ super.init(texture: nil,color: .purpleColor(),size: CGSize(width: 50,height: 50)) self.name = name self.userInteractionEnabled = true } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func touchesBegan(touches: Set<UITouch>,withEvent event: UIEvent?) { delegate?.printButtonsName(self.Name) } }
这里重要的是userInteractionEnabled = true,这意味着该按钮将接受触摸.另一个重要的事情是委托财产.如前所述,按钮将场景设置为其委托.当我们创建一些按钮时,将场景设置为按钮的代表…为了使您更容易,请将代表视为为老板工作的工作人员:)老板(按钮)告诉他的工作人员(一个场景)为他做点什么(打印他的名字).
好的,所以我们确保场景符合ButtonDelegate协议……为什么这很重要?这很重要,因为工人(场景)必须遵循他老板的命令(一个按钮).通过遵守这个协议,工人正在与他的老板签订合同,确认他知道如何完成工作并遵循他的命令:)
class GameScene: SKScene,ButtonDelegate { override func didMoveToView(view: SKView) { let play = Button(name:"play") play.delegate = self let stop = Button(name:"stop") stop.delegate = self play.position = CGPoint(x: frame.midX - 50.0,y: frame.midY) stop.position = CGPoint(x: frame.midX + 50.0,y: frame.midY) addChild(play) addChild(stop) } func printButtonsName(name: String?) { if let buttonName = name { print("Pressed button : \(buttonName) ") } //Use switch here to take appropriate actions based on button's name (if you likE) } }
就是这样.当您点击播放按钮时,将调用按钮本身上的touchesBegan,然后该按钮将告诉其委托使用场景类中定义的方法打印其名称.
以上是大佬教程为你收集整理的swift – 如何检测触摸了哪个SKSpriteNode全部内容,希望文章能够帮你解决swift – 如何检测触摸了哪个SKSpriteNode所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。