2016-06-15 5 views
0

Ich erstelle tatsächlich ein Puzzle-Spiel für iPad. Ich würde gerne einen beweglichen Schieberegler erstellen, der alle Puzzleteile unabhängig von den anderen Elementen des Spiels enthält.Swift SpriteKit: Wie man einen horizontalen Schieberegler größer als Bildschirm machen

Ich habe es geschafft, das Puzzle auf dem Bildschirm zu erstellen, mit den verschiedenen Puzzleteilen herum, die der Benutzer mit dem Finger bewegen kann. Um den beweglichen Schieberegler zu erstellen, denke ich, um die Anweisungen in meiner Haupt-SWIFT-Datei zu verwenden.

Ein, um die verschiedenen Elemente des Spiels zu erstellen, auf dem Bildschirm und der andere zu stehen, um den beweglichen Schieberegler zu erstellen. Ich habe das erfolgreich gemacht, mit den verschiedenen Puzzleteilen, die auf dem Slider enthalten sind, aber ich kann es nicht horizontal bewegen, sogar mit einer touchMoved-Funktion auf dem Slider. Ich habe einen 4096 Pixel großen Schieberegler erstellt, meine Szenengröße ist auf 2048 x 1536 festgelegt, mit einem set.scalemode auf .AspectFill. Ich denke, das Problem kommt von hier (vielleicht).

Wenn ich eine viel größere Szene (wie 4096 x 1536) mit dem scene.scalemode auf .Fill erstellen, bekomme ich ein verzerrtes Bild auf dem iPad. Wie man das schafft?

class GameViewController: UIViewController { 
override func viewWillLayoutSubviews() { 
// Configure the view. 
let skView = self.view as! SKView 
skView.showsFPS = true 
skView.showsNodeCount = true 

skView.ignoresSiblingOrder = true 

let scene = GameScene(size: skView.frame.size) 
scene.size.width = 4096 
scene.size.height = 1536 


/* Set the scale mode to scale to fit the window */ 
scene.scaleMode = .Fill 


skView.presentScene(scene) 
} 

Dank durch Voraus für Ihre Hilfe,

Antwort

1

Obwohl der Titel und Ihre divergieren eigentliche Frage etwas, ich nehme an, Ihr Problem ist, wie ein SKScene zu erstellen, die größer ist als die UIView, die es präsentiert.

Die Größe des SKScene ist die Punktauflösung, die die darstellende Ansicht (typischerweise eine Instanz von SKView) darstellt. Dies ist bevor die UIScreen-Skalierung berücksichtigt wird, so dass eine Szene von 1024 * 768 in einer Vollbild-iPad-Ansicht bei 2048 * 1536 wiedergegeben wird. Die scaleMode-Eigenschaft der SKScene wird nur berücksichtigt, wenn die Größe der Szene und der enthaltenen SKView-Instanz unterschiedlich ist.

Meiner Meinung nach sind Szenarien, in denen die Größe der Szene von der SKView-Größe abweicht, selten und außergewöhnlich. Sie können SKView und SKScene mit UIImageView bzw. UIImage vergleichen. Nur wenn das Seitenverhältnis unterschiedlich ist, beeinflusst der scaleMode das Rendering/Aussehen des UIImage in der Ansicht.

Also, wie erstellt man eine Szene größer als die Ansicht? Das ist eine Trickfrage, denn brauchst du nicht.

Betrachten Sie die Größe von SKScene als Ansichtsfenster der Szene. SKNodes innerhalb der Szene sind nicht darauf beschränkt, nur innerhalb des Ansichtsfensters der Szene positioniert zu werden. Mit einer SKScene der Größe 1024 * 768, ist es vollkommen legitim eine SKSpriteNode zu schaffen (etwa die Größe 20 * 20) und positionieren Sie es an:

  • (0,0): Sie sehen ein Quadrat von 10 * 10 Punkte (oder 20 * 20 Pixel ) in dem unteren linken (mit drei Vierteln der es verborgen, aus dem Rendering-Ansichtsfenster)
  • (500.500): vollständig sichtbar
  • (1034,778): genau außerhalb der Grenzen in der oberen rechten Ecke
+0

Danke für Ihre Erklärung, dies hat dazu beigetragen, mein Problem zu lösen! – PGibouin