gpt4 book ai didi

ios - 平移 - 平移之前图像的初始位置

转载 作者:行者123 更新时间:2023-11-30 13:34:23 26 4
gpt4 key购买 nike

我正在使用 Swift/SpriteKit 并在 SKScene 上创建了 map 的宽图像。我正在用代码完成这一切,并希望让用户拖动手指来平移这张超宽的 map 。可以将其想象为幻想世界的老式 RPG map 。我能够实现平移,但图像最初位于屏幕中央(这意味着用户可以向左或向右平移)。

问题是,我希望它们一直向左“开始”,所以它们最初只能向右平移才能看到 map 的另一侧(它们只能水平平移)。

有没有办法以这种方式在宽图像上开始初始位置?

  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)


}

我尝试像这样更改下面 map 的位置

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

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

(因此使用 min 而不是 middle),但这只是在左侧创建了很多灰色空间(平移后它很好地卡入到位,但我不想让用户必须这样做)。

有什么想法吗?

谢谢!

最佳答案

好吧,也许这不是最好的方法,但我是这样解决的:

 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))

我在 didMoveToView 中添加了这段代码,就在我第一次将背景节点添加到屏幕上之后。

..所以我们的想法是,只需设置约束,然后将图像向左移动很远,约束将防止它走得太远。

..然后用户可以正常平移。这有效!

关于ios - 平移 - 平移之前图像的初始位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36243611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com