Warum unterscheiden sich die Szenen-/Ansichtskoordinaten von iOS SpriteKit zwischen iOS 7.1 und iOS 8?

StackOverflow https://stackoverflow.com//questions/25050389

  •  21-12-2019
  •  | 
  •  

Frage

Ich erkunde die iOS 8-Betaversion von SpriteKit, wobei das Bereitstellungsziel meines Projekts auf iOS 7 festgelegt ist, damit ich das veröffentlichte iOS 7.1 auf meinem iPad Air testen kann.

Ich habe festgestellt, dass die Koordinaten zwischen meinen SKScene und sein SKView sind zwischen dem Simulator (mit iOS 8) und meinem Gerät (mit iOS 7.1) nicht konsistent.Hier ist der Code, den ich verwendet habe, um die Inkonsistenz zu isolieren:

Beginnend mit der iOS-SpriteKit-Spielvorlage habe ich die Einstellungen nur so geändert Landschaft rechts Ausrichtung wird unterstützt und ich habe den folgenden Code hinzugefügt GameScene Klasse:

class GameScene: SKScene {

    …

    var scaleFromView: CGPoint!

    override func didMoveToView(view: SKView) {
        /* Setup your scene here */
        label = SKLabelNode(fontNamed:"Chalkduster")
        label.text = "Hello, World!";
        label.fontSize = 65;
        label.position = CGPoint(x:0.0, y:0.0);
        label.zPosition = -1.0

        let referencePt = CGPoint(x: 100, y: 100)
        var viewPt = convertPointToView(CGPoint(x: 0, y: 0))
        viewPt = viewPt + referencePt
        let scenePt = convertPointFromView(viewPt)
        scaleFromView = scenePt / referencePt
        println("  view.bounds is \(view.bounds)")
        println("   scene.size is \(scene.size)")
        println("scaleFromView is \(scaleFromView)")

        world.addChild(label)
    }

    …

Beachten Sie, dass hierfür einige Operatoren verwendet werden, die ich für die Arbeit definiert habe CGPoint:

@infix func + (a: CGPoint, b: CGPoint) -> CGPoint {
    return CGPoint(x: a.x + b.x, y: a.y + b.y)
}

@infix func - (a: CGPoint, b: CGPoint) -> CGPoint {
    return CGPoint(x: a.x - b.x, y: a.y - b.y)
}

@infix func * (a: CGPoint, b: CGPoint) -> CGPoint {
    return CGPoint(x: a.x * b.x, y: a.y * b.y)
}

@infix func / (a: CGPoint, b: CGPoint) -> CGPoint {
    return CGPoint(x: a.x / b.x, y: a.y / b.y)
}

Beim Unterfahren beliebig der iOS 8-Simulatoren, einschließlich der iPad Air-Simulation, die println Anweisungsprotokolle (wie ich angesichts der Einstellungen für Szenen- und Ansichtsgrenzen erwarten würde):

  view.bounds is (0.0,0.0,1024.0,768.0)
   scene.size is (1024.0,768.0)
scaleFromView is (1.0,-1.0)

Aber wenn ich es auf meinem Gerät ausführe, erhalte ich Folgendes:

  view.bounds is (0.0,0.0,768.0,1024.0)
   scene.size is (1024.0,768.0)
scaleFromView is (0.75,-0.75)

Es scheint also, dass die Ansicht die Ausrichtung im Querformat nicht richtig widerspiegelt. Warum passiert das?

PS:Ich habe die iOS 7.1-Simulatoren heruntergeladen und kann nun berichten, dass sie sich konsistent mit dem Gerät verhalten.Das heißt, dies scheint ein Fehler/eine Funktion von iOS 7.1 zu sein.

War es hilfreich?

Lösung

Nach dem Herunterladen und Installieren der iOS 7.1 Bei den Simulatoren konnte ich feststellen, dass sie sich konsistent mit dem Gerät verhalten.Das heißt, auch sie berichten view.bounds spiegelt eher den Hochformat- als den Querformatmodus wider, obwohl (oder vielleicht Weil) Meine App ist nur im Querformat verfügbar.

Dies scheint ein Fehler/eine Funktion von zu sein iOS 7.1.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top