因此,从 watchOS 3.0 开始,您现在可以获得数字表冠的旋转。我设法在 InterfaceController 中使用了crownDidRotate函数。但我无法从 SKScene 类中旋转表冠。有人可以帮我解决这个问题吗?我现在很迷茫?谢谢。
问问题
986 次
2 回答
8
要在接口控制器中获取这些crownDidRotate
调用,您必须在接口控制器中采用WKCrownDelegate
协议,并将接口控制器设置delegate
为其crownSequencer
.
要crownDidRotate
在其他类中调用,请采用该类中的WKCrownDelegate
协议,并将该类的实例设置为delegate
接口控制器的crownSequencer
.
大概你已经有一些这样的代码来设置你的 SpriteKit 场景:
class InterfaceController: WKInterfaceController {
@IBOutlet var spriteGizmo: WKInterfaceSKScene!
override func awake(withContext context: AnyObject?) {
super.awake(withContext: context)
let scene = MyScene(fileNamed: "MyScene")
spriteGizmo.presentScene(MyScene(fileNamed: "MyScene"))
}
}
如果您WKCrownDelegate
在您的类中声明了一致性MyScene
,只需添加一行将其设置为接口控制器的冠序列器的委托:
let scene = MyScene(fileNamed: "MyScene")
spriteGizmo.presentScene(MyScene(fileNamed: "MyScene"))
crownSequencer.delegate = scene
(或者,您可以WKInterfaceSKScene
在 Storyboard 中设置您的场景。在这种情况下,您仍然可以WKInterfaceSKScene
使用接口控制器引用IBOutlet
。然后在 中awake(withContext:)
,您可以通过该插座访问场景并将其设置为冠代表。)
于 2016-06-15T03:53:12.497 回答
0
在 watchOS 3 中,任何对象对象都可以通过将它们设置为委托来获取数字皇冠事件:
let crownSequencer = WKExtension.shared().rootInterfaceController!.crownSequencer
crownSequencer.delegate = self
crownSequencer.focus()
然后通过实现读回该值:
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double)
调用 很重要focus()
,尤其是对于 UI 适合屏幕且不需要实际滚动的控制器。
于 2016-09-28T12:26:55.270 回答