在Sprite Kit swift中停止repeatActionForever

时间:2016-02-16 05:47:28

标签: swift sprite-kit

我创造了一个重​​复的东西(它是行星旋转的)SKAction。但是一旦着陆器降落在着陆垫上,我想阻止它。到目前为止,我的代码无效。我已经尝试了removeAllActions()和removeActionForKey,因为你会看到。联系人检测工作正常,并且有一堆未显示的代码,包括冲突代表等。

text/plain

这就是......

  func createPlanet() {
    var planet = SKSpriteNode()
    planet.zPosition = 1
    planet.name = "mars"

    redPlanet = SKSpriteNode(imageNamed: "redPlanet")
    redPlanet.name = "red"
    redPlanet.zPosition = 2
    redPlanet.physicsBody = SKPhysicsBody(texture: redPlanet.texture!, size: size)
    redPlanet.physicsBody!.dynamic = false
    redPlanet.physicsBody!.categoryBitMask = planetMask
    redPlanet.physicsBody!.contactTestBitMask = 0
    planet.addChild(redPlanet)

    landingPad = SKSpriteNode(imageNamed: "landingPad")
    landingPad.name = "pad"
    landingPad.zPosition = 3
    landingPad.position = CGPoint(x: 0, y: redPlanet.size.height / 2 - 60)
    landingPad.physicsBody = SKPhysicsBody(rectangleOfSize: landingPad.size)
    landingPad.physicsBody!.dynamic = false
    landingPad.physicsBody!.categoryBitMask = landingPadMask
    landingPad.physicsBody!.collisionBitMask = landerMask
    landingPad.physicsBody!.contactTestBitMask = landerMask
    planet.addChild(landingPad)

    planet.position = CGPoint(x: frame.size.width / 2, y: -redPlanet.size.height / 6)

    let spinner = SKAction.rotateByAngle(CGFloat(M_PI), duration: 3)
    planet.runAction(SKAction.repeatActionForever(spinner), withKey: "planetSpin")

    addChild(planet)
  }

1 个答案:

答案 0 :(得分:0)

您不是从行星节点移除操作,而是从场景或父节点或didBeginContact所属的任何节点移除它们。

planet作为一个类变量,并在didBeginContact中调用planet.removeAllActions()