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!