SKAction.moveToX重复值更改

我希望能够移动球,每隔20像素移动一次我试过这个球,但是什么也没做,球停留在开始的地方,它不移动到屏幕的尽头,我知道我没有不要把waitForDuration,因为我想检查它是否会移动或不

func spwan() { let ball:SKSpriteNode = SKScene(fileNamed: "Ball")?.childNodeWithName("ball") as! SKSpriteNode ball.removeFromParent() self.addChild(ball) ball.name = "spriteToTrack" ball.zPosition = 0 ball.position = CGPointMake(1950, 1000) var num:CGFloat = ball.position.x let a1 = SKAction.moveToX(num - 20, duration: 10) // i want to get to -50 let a1 = SKAction.moveToX(-50 , duration: 10) let minus = SKAction.runBlock{ num -= 20 } let sq1 = SKAction.sequence([a1,minus]) ball.runAction(SKAction.repeatAction(sq1, count: 10) } 

至less在上面的代码中球应该移动20个像素,但是在10秒内20个像素可能看起来像停顿。 无论如何,我认为你已经使用moveToX而不是moveBy: ,所以(用一些rejigging)你可能比这更好:

 func spawn() { let x: CGFloat = 1950 let xDelta: CGFloat = -20 let xDestination: CGFloat = -50 let repeats = Int((x - xDestination)/fabs(xDelta)) let move = SKAction.moveBy(CGVectorMake(xDelta, 0), duration: 2) // made it a lot quicker to show that stuff is happening move.timingMode = .EaseInEaseOut let ball:SKSpriteNode = SKScene(fileNamed: "Ball")?.childNodeWithName("ball") as! SKSpriteNode ball.removeFromParent() ball.name = "spriteToTrack" ball.position = CGPointMake(x, 1000) addChild(ball) ball.runAction(SKAction.repeatAction(move, count: repeats)) }