tvOS UIPress 手势在 SKScene 的子类中未被识别
tvOS UIPress gestures not being recognized in subclass of SKScene
我正在尝试在 SKScene 的子class 中回复新闻。我可以覆盖我的 ViewController 内的响应程序 pressesEnded 就好了,但是当我将我的 pressesEnded 覆盖移动到我的 SKScene 子 class 时,我不再收到任何电话。
下面是我的 pressesEnabled 覆盖,它在 ViewController
中按预期工作
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
print("press")
}
有人知道如何在 SKScene 中接收按钮按下吗?
您需要将您的新闻事件从 ViewController 转发到 SKScene,就像这样...
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
gameScene.pressesBegan(presses, withEvent: event)
}
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
gameScene.pressesEnded(presses, withEvent: event)
}
然后在 gameScene (SKScene) 中执行如下操作:
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
for press in presses {
switch press.type {
case .UpArrow:
print("Up Arrow")
case .DownArrow:
print("Down arrow")
case .LeftArrow:
print("Left arrow")
case .RightArrow:
print("Right arrow")
case .Select:
print("Select")
case .Menu:
print("Menu")
case .PlayPause:
print("Play/Pause")
}
}
}
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
print("Presses Ended.")
}
当用户点击触摸板的边缘时发送 "Arrow" 次按压,但在模拟器中无法识别。 "Select" 在触摸板中心被点击时发送。
希望对您有所帮助!
使用 pressesBegan
映射物理按钮(菜单、播放暂停),并使用 pressesBegan
或 pressesEnded
映射 Apple TV Remote 的触控板(左、右等)。
如果你按下触控板的 "button" 并移动到另一个位置并释放,方法 pressesEnded
不会被调用,你不能用物理按钮做到这一点。
印刷开始:
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
print("Press began")
for item in presses {
if item.type == .PlayPause {
print("PlayPause")
}
}
}
印刷结束:
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
print("Press Ended")
for item in presses {
if item.type == .RightArrow {
print("Right Arrow")
}
}
}
我正在尝试在 SKScene 的子class 中回复新闻。我可以覆盖我的 ViewController 内的响应程序 pressesEnded 就好了,但是当我将我的 pressesEnded 覆盖移动到我的 SKScene 子 class 时,我不再收到任何电话。
下面是我的 pressesEnabled 覆盖,它在 ViewController
中按预期工作override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
print("press")
}
有人知道如何在 SKScene 中接收按钮按下吗?
您需要将您的新闻事件从 ViewController 转发到 SKScene,就像这样...
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
gameScene.pressesBegan(presses, withEvent: event)
}
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
gameScene.pressesEnded(presses, withEvent: event)
}
然后在 gameScene (SKScene) 中执行如下操作:
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
for press in presses {
switch press.type {
case .UpArrow:
print("Up Arrow")
case .DownArrow:
print("Down arrow")
case .LeftArrow:
print("Left arrow")
case .RightArrow:
print("Right arrow")
case .Select:
print("Select")
case .Menu:
print("Menu")
case .PlayPause:
print("Play/Pause")
}
}
}
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
print("Presses Ended.")
}
当用户点击触摸板的边缘时发送 "Arrow" 次按压,但在模拟器中无法识别。 "Select" 在触摸板中心被点击时发送。
希望对您有所帮助!
使用 pressesBegan
映射物理按钮(菜单、播放暂停),并使用 pressesBegan
或 pressesEnded
映射 Apple TV Remote 的触控板(左、右等)。
如果你按下触控板的 "button" 并移动到另一个位置并释放,方法 pressesEnded
不会被调用,你不能用物理按钮做到这一点。
印刷开始:
override func pressesBegan(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
print("Press began")
for item in presses {
if item.type == .PlayPause {
print("PlayPause")
}
}
}
印刷结束:
override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
print("Press Ended")
for item in presses {
if item.type == .RightArrow {
print("Right Arrow")
}
}
}