2016-03-27 10 views
0

Ich verwende Swift/SpriteKit und erstellte ein breites Bild einer Karte auf einem SKScene. Ich mache das alles in Code und wollte den Benutzer den Finger ziehen lassen, um über diese extra breite Karte zu schwenken. Stellen Sie sich das wie eine RPG-Karte eines Fantasy-Landes vor. Ich konnte das Schwenken erreichen, aber das Bild befindet sich zunächst in der Mitte des Bildschirms (dh der Benutzer kann nach links oder rechts schwenken).Schwenken - Anfangsposition meines Bildes vor dem Schwenken

Die Sache ist, ich wollte, dass sie den ganzen Weg "starten", so dass sie nur nach rechts schwenken können, um die andere Seite der Karte zu sehen (sie können nur horizontal schwenken).

Gibt es eine Möglichkeit, die Anfangsposition auf einem breiten Bild auf diese Weise zu beginnen?

override func didMoveToView(view: SKView) { 
      self.scaleMode = SKSceneScaleMode.Fill; 
      background = SKSpriteNode(imageNamed: "map") 
      background.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); 
      background.blendMode = .Replace 
      background.zPosition = -1 

      addChild(background) 

      let pan = UIPanGestureRecognizer(target: self, action: "dragScene:") 
      pan.minimumNumberOfTouches = 1; 
      self.view!.addGestureRecognizer(pan) 
     } 
     func dragScene(gesture: UIPanGestureRecognizer) 
     { 

      let xRange = SKRange(lowerLimit: 250,upperLimit: 764) 
      let yRange = SKRange(lowerLimit:0,upperLimit:size.height) 
      background.constraints = [SKConstraint.positionX(xRange,y:yRange)] 

      let trans = gesture.translationInView(self.view) 
      let moveMap = SKAction.moveBy(CGVector(dx: trans.x * 0.08, dy: 0), duration: 0.0) 
      background.runAction(moveMap) 


     } 

Ich habe versucht, die Position der Karte zu ändern unten wie folgt

CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame)); 

zu

CGPointMake(CGRectGetMinX(self.frame), CGRectGetMidY(self.frame)); 

(so mit min statt Mitte), aber das nur eine Menge grauen Raum geschaffen auf der linken Seite (nach dem Verschieben schnappte es in Ordnung, aber ich wollte nicht den Benutzer dazu zwingen).

Irgendwelche Ideen?

Danke!

Antwort

0

Nun, vielleicht ist dies nicht der beste Weg, aber hier ist, wie ich es gelöst:

let xRange = SKRange(lowerLimit: 250,upperLimit: 764) 
     let yRange = SKRange(lowerLimit:0,upperLimit:size.height) 
     background.constraints = [SKConstraint.positionX(xRange,y:yRange)] 

     background.runAction(SKAction.moveBy(CGVector(dx: 2000, dy: 0), duration: 0.0)) 

Ich habe diesen Code in dem didMoveToView, kurz nachdem ich den Hintergrund Knoten auf den Bildschirm für die hinzufügen erstes Mal.

..So die Idee ist, setzen Sie einfach Einschränkungen und dann bewegen Sie Ihr Bild absurd weit nach links und die Einschränkungen werden verhindern, dass es zu weit gehen.

..Dann kann der Benutzer normal schwenken. Das hat funktioniert!