SKActions有时不起作用,但是如果最小化游戏并重新打开它,则它起作用。那怎么可能呢?

时间:2019-03-23 18:58:47

标签: ios swift sprite-kit skaction

我遇到2个动作的问题,两个动作都移到了动作,这会将棋子移动到空节点的位置(从sks文件中添加了空的sknodes)。问题仅在某些情况下并不总是发生,在第一个位置,当玩家到达位置:25表示获胜时,它移至空节点的位置,但有时并没有移至该位置,但游戏仍在继续,如果我最小化游戏并打开它他们已经在那里,他们本来应该搬到那里。

第二个问题更重要,因为随着这个滑行选手移动到下一个位置。但是极少数情况下,它不能正常工作,但一切正常,但是当执行该滑板时,它会完全停止,仅触摸即可。但是如果我只是最小化游戏并打开它,它会移至位置,然后游戏运行正常。没问题,这怎么会发生?

我用序列的其他两个动作运行第二个skaction,使用skspritenode.run()动作运行第一个skaction。而且我没有iOS设备,因此我正在模拟器上对其进行测试。

这是我使用的两个SKAction,只是没有什么新鲜的东西:

for node in children {

        if (node.name == String(nextSpace)) {

        let moveAction:SKAction = SKAction.move(to: node.position, duration: 0.5)
        moveAction.timingMode = .easeOut

        let wait:SKAction = SKAction.wait(forDuration: 0.1)
        let runAction:SKAction = SKAction.run({

            if (self.movesRemaining == 1) {

                self.KillHim(self.whosTurn, nextspace: nextSpace)

            }

            self.movesRemaining = self.movesRemaining - 1
            self.setThePlayerSpace(space: nextSpace, player:self.whosTurn)

            self.movePiece()

            })
            if whosTurn == .Player1 {

                touchedNode.run(SKAction.sequence([moveAction, wait, runAction]))

            } else {

                playerPiece.run(SKAction.sequence([moveAction, wait, runAction]))

            }
        }
    }

玩家获胜时移动代码:

if (currentSpacePlayer1Piece1 == 25) {

               let loc:SKNode = childNode(withName: "c1")!
               Player1Piece1.run(SKAction.move(to: loc.position, duration: 0.2))
               currentSpacePlayer1Piece1 = 26
               OneMoreMove += 1
 } else if (currentSpacePlayer1Piece2 == 25) {

               let loc:SKNode = childNode(withName: "c2")!
                Player1Piece2.run(SKAction.move(to: loc.position, duration: 0.2))
                currentSpacePlayer1Piece2 = 26
                OneMoreMove += 1
 }

是否可能是因为在模拟器中使用了它?

0 个答案:

没有答案