watchOS 3.0在SpriteKit中检测表冠旋转

时间:2016-06-14 14:57:13

标签: sprite-kit watchkit swift3 xcode8 watch-os-3

因此,在watchOS 3.0中,您现在可以获得数字表冠的旋转。我设法在InterfaceController中使用crownDidRotate函数。 但我无法从SKScene Class中获得表冠的旋转。 任何人都可以帮助我,我现在很迷茫吗? 感谢。

2 个答案:

答案 0 :(得分:7)

要在接口控制器中获取crownDidRotate个调用,必须在接口控制器中采用WKCrownDelegate协议,并将接口控制器设置为其crownSequencer crownDidRotate }}。

要在其他类中调用crownSequencer,请在该类中采用delegate协议,并将该类的实例设置为接口控制器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")) } } 的{​​{3}} }。

据推测,您已经有一些这样的代码来设置您的SpriteKit场景:

MyScene

如果您在let scene = MyScene(fileNamed: "MyScene") spriteGizmo.presentScene(MyScene(fileNamed: "MyScene")) crownSequencer.delegate = scene 类中声明了WKCrownDelegate一致性,只需添加一行以将其设置为接口控制器的冠序器的委托:

WKInterfaceSKScene

(或者,您可以在故事板中设置WKInterfaceSKScene的场景。在这种情况下,您仍然可以使用IBOutlet从您的界面控制器中引用awake(withContext:)。然后在PROCEDURE get_something3(name IN VARCHAR2, address IN VARCHAR2, var IN VARCHAR2, result OUT VARCHAR2){ .... SELECT * FROM multisource WHERE col1 = nvl(name,col1) and col2 = nvl(address,col2) and col3 = nvl(var,col3); .... ,您可以通过该出口访问该场景并将其设置为皇冠代表。)

答案 1 :(得分:0)

在watchOS 3中,任何对象对象都可以通过将它们设置为委托来获得数字皇冠事件:<​​/ p>

let crownSequencer = WKExtension.shared().rootInterfaceController!.crownSequencer
crownSequencer.delegate = self
crownSequencer.focus()

然后通过实现:

回读该值
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double)

调用focus()非常重要,尤其是对于UI适合屏幕并且不需要实际滚动的控制器。