5

SKScene のサブクラスでプレスに対応しようとしています。ViewController 内のレスポンダー pressesEnded をうまくオーバーライドできますが、pressesEnded オーバーライドを SKScene サブクラスに移動すると、呼び出しを受けなくなります。

以下は、ViewController 内で意図したとおりに機能する私の pressesEnabled オーバーライドです。

override func pressesEnded(presses: Set<UIPress>, withEvent event: UIPressesEvent?) {
    print("press")
}

SKScene 内でボタンの押下を受け取る方法を知っている人はいますか?

4

2 に答える 2

8

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.")
}

ユーザーがタッチパッドの端をタップすると、「矢印」プレスが送信されますが、シミュレーターでは認識されません。タッチパッドの中央をタップすると「Select」が送信されます。

これが役立つことを願っています!

于 2015-09-21T23:28:29.910 に答える