So wie von watchOS 3.0 können Sie jetzt die Rotation der digitalen Krone bekommen. Ich habe es geschafft, die crownDidRotate Funktion in einem InterfaceController zu verwenden. Aber ich kann die Rotation der Krone nicht aus einer SKScene Klasse bekommen. Kann mir jemand helfen? Ich bin jetzt ziemlich verloren? Danke.watchOS 3.0 erkennt Kronendrehung in SpriteKit
Antwort
Um diese crownDidRotate
Anrufe in Ihrem Interface Controller bekommen, musste man das WKCrownDelegate
Protokoll in Ihrem Interface-Controller zu übernehmen, und stellen Sie Ihre Schnittstellen-Controller als delegate
seiner crownSequencer
.
Um crownDidRotate
Anrufe in einer anderen Klasse zu erhalten, nimmt das WKCrownDelegate
Protokoll in dieser Klasse, und legen Sie eine Instanz dieser Klasse, die als delegate
Ihre crownSequencer
des Schnittstellen-Controller.
Vermutlich haben Sie bereits einige Code wie folgt Ihre SpriteKit Szene einzurichten:
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"))
}
}
Wenn Sie WKCrownDelegate
Konformität in Ihrer MyScene
Klasse deklariert haben, fügen Sie einfach eine Zeile es als Delegierter des einzustellen Schnittstellen-Controller Krone Sequenzer:
let scene = MyScene(fileNamed: "MyScene")
spriteGizmo.presentScene(MyScene(fileNamed: "MyScene"))
crownSequencer.delegate = scene
(Alternativ können Sie Ihre WKInterfaceSKScene
‚s Szene im Storyboard festgelegt in diesem Fall können Sie immer noch die WKInterfaceSKScene
von Ihrer Schnittstelle verweisen. Controller mit einem IBOutlet
. Dann in awake(withContext:)
, können Sie die Szene durch diesen Ausgang zugreifen und sie als Krone Delegierten eingestellt)
In watchOS 3 irgendein Objekt-Objekt kann digitale Krone Ereignisse erhalten, indem sie als Delegierter Einstellung.
let crownSequencer = WKExtension.shared().rootInterfaceController!.crownSequencer
crownSequencer.delegate = self
crownSequencer.focus()
Dann lesen Sie den Wert wieder durch die Implementierung:
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double)
Es ist wichtig, die focus()
, vor allem für Controller, dessen UI passt den Bildschirm zu rufen und nicht die tatsächlichen Bildlauf benötigen.
- 1. contactTestBitMask erkennt nicht in didBeginContact (Logs) in SpriteKit mit Swift
- 2. Wie man erkennt, wenn sich zwei Objekte in SpriteKit berühren
- 3. eine Textur in watchOS Extrahierung 3
- 4. Live-Herzfrequenz in watchOS 3
- 5. watchOS 2 Herzfrequenzsensor
- 6. watchOS Nachricht sendet nicht
- 7. Programm watchOS Version finden
- 8. WatchOS Unit Testing
- 9. MVC Music Store 3.0 - MVC erkennt keinen Store
- 10. WatchOS 2 - iOS UserDefaults teilen
- 11. Hit Animationen in Spritekit
- 12. Sinuswelle Bewegung in SpriteKit
- 13. Kollisionen in SpriteKit
- 14. Affine Transformationen in SpriteKit
- 15. Wie migriere ich das bestehende Projekt von WatchOS 2 in WatchOS 3
- 16. Überprüfen Sie die Verfügbarkeit der Funktionen watchOS 3 Xcode 8 vs watchOS 2 in Ziel c
- 17. Entfernen von Glance von watchOS
- 18. SpriteKit Animation
- 19. Verschieben einer Kamera in SpriteKit
- 20. Erstellen einer Zufallszahl in SpriteKit
- 21. didBeginContact() in SpriteKit funktioniert nicht
- 22. Unterklasse SpriteKit-Klassen in Swift
- 23. Ändern der Anfangsszene in spritekit
- 24. Bilderrahmen in swift/spritekit loswerden
- 25. Endless Scrolling Hintergrund in SpriteKit
- 26. Animation Zustandsmaschine in SpriteKit Fehler
- 27. Menüschaltflächen in tvOS SpriteKit App
- 28. Schedule Audio in SpriteKit - Swift
- 29. Verwendung des vorhandenen Blickbildschirms von WatchOS 2 als Momentaufnahme der Watch App für WatchOS 3
- 30. WatchOS 2 - Bildsequenzen für Animation übertragen