使用捏合手势调整精灵工具包节点的大小



我正在尝试实现捏合手势识别器来调整我的精灵节点的大小。我正在使用setScale(sender.scale)来做到这一点,但每次我抬起手指并尝试再次捏合时,我的精灵都会重置为 1.0 比例,然后再缩放到捏合。

我想要的是当我重新捏住屏幕时,精灵大小保持原样,当我捏出屏幕时它会变大,或者随着我捏合而变小,这样我就可以继续捏合以使其尽可能大或尽可能小。怎么做?

这是我的代码。

var pizza = PizzaSprite()
override func didMove(to view: SKView) {
    let pinchGesture = UIPinchGestureRecognizer(target: self, action: #selector(self.handlePinchFrom(_:)))
    pizza = PizzaSprite(size: self.frame.width * 0.25)
    self.addChild(pizza)
    self.view?.addGestureRecognizer(pinchGesture)
}
func handlePinchFrom(_ sender: UIPinchGestureRecognizer) {
    if sender.state == .began {
    } else if sender.state == .changed {
        pizza.setScale(sender.scale)
    } else if sender.state == .ended {
    }
}

这是披萨雪碧类

init() {
    let texture = SKTexture(imageNamed: "demPizza")
    super.init(texture: texture, color: UIColor.clear, size: texture.size())
}
init(size: CGFloat) {
    let texture = SKTexture(imageNamed: "demPizza")
    super.init(texture: texture, color: UIColor.clear, size: CGSize(width: size, height: size))
}

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

所以,我已经为此工作了一个星期,放弃了一次,只使用 pan 代替,但我不得不使用捏重试。就在我发布这个问题几分钟后,我自己得到了答案......

我在这里发帖,以防有人需要这个。

func handlePinchFrom(_ sender: UIPinchGestureRecognizer) {
    let pinch = SKAction.scale(by: sender.scale, duration: 0.0)
    pizza.run(pinch)
    sender.scale = 1.0
}

相关内容

最新更新