2016-06-01 17 views
0

Ich mache ein SpriteKit-Spiel für iOS, OSX und tvOS. Ich versuche den Beschleunigungssensor für mein iOS-Ziel zu verwenden. Ich habe die Überprüfung für iOS beim Importieren des CMMotionManagers, aber ich kann nicht scheinen, dass der Check funktioniert, wenn ich meine Motion Manager-Eigenschaft erstelle.Eigenschaft nur unter iOS deklarieren

#if os(iOS) 
    import CMMotionManager 
#endif 

class MainPlayScene: TCScene, SKPhysicsContactDelegate { 

    //MARK: Properties 
    //Motion 
    @available(iOS 9, *) // Does not work, just trying things out.... 
    var motionManager:CMMotionManager { 
     return motionManager 
    } 

Wie kann ich diese Prüfung durchführen?

EDIT: Es ist spät hier, und je mehr ich darüber nachdenke, korrigieren Sie mich, wenn ich alle auf der falschen Spur bin. Wie kann ich den Beschleunigungssensor nur für iOS verwenden und trotzdem meinen Szenencode teilen?

Antwort

2

Sie verwenden die gleiche Syntax verwenden, die Sie für Ihre Import-Anweisung verwendet. Dies ist auch, was Apple in ihrem Beispielspiel DemoBots macht.

#if os(iOS) 
var motionManager.... 
#endif 

#if os(tvOS) 
... 
#endif 

Sie können auch mehrere Kontrollen tun und verwenden else/else if

#if os(iOS) || os(tvOS) 
.... 
#elseif os(OSX) 
... 
#endif 
... // Code for other platforms 
#endif 

How to determine device type from Swift? (OS X or iOS)

Einfach nur neugierig, einen besonderen Grund Sie die Eigenschaft Motion machen berechnet?

+0

Kein Grund, ich habe nur verschiedene Dinge versucht, um zu sehen, ob sie funktionieren würden. Tolle Lösung, danke. – Siriss

+0

Ehrfürchtig. Happy coding – crashoverride777

+0

Wenn Sie sich wundern, scheint dies der richtige Weg zu sein (Sie haben gefragt, ob Sie auf dem falschen Weg sind). Apple macht das auch in ihrem Beispielspiel DemoBots. – crashoverride777

0

Sie können so etwas wie

#if TARGET_OS_IPHONE 
    import CMMotionManager