tvOS SpriteKit 应用程序中的菜单按钮
Posted
技术标签:
【中文标题】tvOS SpriteKit 应用程序中的菜单按钮【英文标题】:Menu buttons in tvOS SpriteKit app 【发布时间】:2016-04-06 19:26:27 【问题描述】:我不知道如何以 tvOS 方式制作菜单按钮。我知道 UIKit 按钮如何聚焦的新方式,但它们之间的导航是在幕后完成的。在 SpriteKit 中没有 FocusEngine 支持,所以这是我的问题,请你们给个提示或代码 sn-p(最好是 swift)如何创建 SKSpriteNode 按钮以及如何实现它以便它可以像按钮一样工作?
谢谢
【问题讨论】:
【参考方案1】:我不确定这是否是最好的方法,但它适用于我和我的 tvOS 游戏。我使用了手势识别器,并使用左右滑动来更改我的 SKSpriteNode 纹理。这会产生选定/取消选定按钮的效果。比我简单地使用 bool 类型的变量 buttonSelected 并在按钮纹理更改时更新它。比我使用这个变量来决定点击遥控器后应该执行哪个动作。这是通过 buttonAction 函数中的简单 if 语句完成的。我希望这能帮到您。我对 swift 还是很陌生,所以我希望我能清楚地描述它。
class GameScene: SKScene
var button = SKSpriteNode(imageNamed: "button.png")
var buttonSelected = false
var button2 = SKSpriteNode(imageNamed: "button2.png")
var button2Selected = false
override func didMoveToView(view: SKView)
button.position = CGPoint(x: 900, y:100)
self.addChild(button)
button2.position = CGPoint(x: 1700, y:100)
self.addChild(button2)
// gesture recognizer
let swipeRight:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(GameOverScene.swipedRight(_:)))
swipeRight.direction = .Right
view.addGestureRecognizer(swipeRight)
let swipeLeft:UISwipeGestureRecognizer = UISwipeGestureRecognizer(target: self, action: #selector(GameOverScene.swipedLeft(_:)))
swipeLeft.direction = .Left
view.addGestureRecognizer(swipeLeft)
let tapGeneralSelection = UITapGestureRecognizer()
tapGeneralSelection.addTarget(self, action: #selector(GameScene.buttonAction))
tapGeneralSelection.allowedPressTypes = [NSNumber (integer: UIPressType.Select.rawValue)]
self.view!.addGestureRecognizer(tapGeneralSelection)
func swipedRight(sender:UISwipeGestureRecognizer)
let buttonTexture1 = SKTexture(imageNamed: "button2Selected.png")
button2.runAction(SKAction.setTexture(buttonTexture1))
button2Selected = true
let buttonTexture2 = SKTexture(imageNamed: "button.png")
button.runAction(SKAction.setTexture(buttonTexture2))
buttonSelected = false
func swipedLeft(sender:UISwipeGestureRecognizer)
let buttonTexture1 = SKTexture(imageNamed: "buttonSelected.png")
button.runAction(SKAction.setTexture(buttonTexture1))
buttonSelected = true
let buttonTexture2 = SKTexture(imageNamed: "button2.png")
button2.runAction(SKAction.setTexture(buttonTexture2))
button2Selected = false
func buttonAction()
if( buttonSelected == true)
// do something after button is pressed
else if (button2Selected == true)
// do something after button2 is pressed
【讨论】:
以上是关于tvOS SpriteKit 应用程序中的菜单按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何在不破坏“菜单”按钮默认行为的情况下在 tvOS 游戏中设置主菜单