SKAction.moveTo 根本不工作

SKAction.moveTo not working at all

我在使用 Sprite-kit 和 Swift 1.2 时遇到了一个奇怪的问题。我有以下代码。 fingerSprite 正确显示在屏幕中间。

然而,当我应用 moveTo 操作时,没有任何反应。我对 Sprite-Kit 和 Swift 很陌生,所以我可能会做一些完全愚蠢的事情,但请多多包涵。

我做错了什么?

   override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
tutorialStepReset()

var bounceLabels = SKAction.sequence([
    SKAction.scaleTo(1.3, duration: 0.5),
    SKAction.scaleTo(1.0, duration: 0.5)
    ])

var fingerPoint = CGPoint(x: self.size.width/2, y: self.size.height/2)
var fingerSprite = SKSpriteNode(imageNamed: "finger.png")

switch tutorialGuideIndex {
    case 0: self.runAction( SKAction.runBlock({
        self.labelScore.runAction(SKAction.repeatActionForever(bounceLabels))

    }))
    case 1: self.runAction( SKAction.runBlock({
        self.labelUntilNextLevel.runAction(SKAction.repeatActionForever(bounceLabels))

    }))
    case 2: self.runAction( SKAction.runBlock({
        self.labelCurrentLevel.runAction(SKAction.repeatActionForever(bounceLabels))

    }))
    case 3:


        fingerSprite.position = fingerPoint
        fingerSprite.zPosition = labelZPosition
        self.addChild(fingerSprite)
    case 4:
        //move finger & draw line
        fingerPoint.x = fingerPoint.x+20
        fingerPoint.y = fingerPoint.y+20
        fingerSprite.runAction(SKAction.scaleTo(2.0, duration: 4.0))
        fingerSprite.runAction(SKAction.moveTo(fingerPoint, duration: 4.0))


   tutorialGuideIndex++

}

每次触摸都会创建一个 new 精灵,并且仅在 case 3 中将其添加到节点 而无需 运行 移动动作。

当到达 case 4 时,您只需 运行 对新精灵实例的操作而不将其添加到节点,因此它永远不会显示。

将精灵添加到节点后立即使用移动动作

   case 3:       
        fingerSprite.position = fingerPoint
        fingerSprite.zPosition = labelZPosition
        self.addChild(fingerSprite)

        fingerSprite.runAction(SKAction.moveTo(fingerPoint, duration: 4.0))

我还注意到您尝试 运行 对同一个精灵执行两个操作:

    fingerSprite.runAction(SKAction.scaleTo(2.0, duration: 4.0))
    fingerSprite.runAction(SKAction.moveTo(fingerPoint, duration: 4.0))

为了 运行 一个接一个地进行操作,您应该按顺序操作:

fingerSprite.runAction(SKAction.sequence([
   SKAction.scaleTo(2.0, duration: 4.0),
   SKAction.moveTo(fingerPoint, duration: 4.0)]));

如果您需要这些操作来 运行 并行使用 group 操作而不是 sequence

对我来说,解决方案非常简单。由于某种原因,精灵暂停,您必须将其设置为 false。

newTile.isPaused = false