SpriteKit过渡不起作用

时间:2015-07-01 07:07:53

标签: ios swift sprite-kit

我正在尝试向我的SpriteKit场景添加转换,但它无法正常工作。我的第二个场景叫做#34; myScene。"这是我的代码:

  func didBeginContact(contact: SKPhysicsContact) {
    let collision:UInt32 = (contact.bodyA.categoryBitMask | contact.bodyB.categoryBitMask)

    if collision == (playerCategory | crateCategory) {

        NSLog("Game Over")
        self.scene?.view?.paused = true
        var myscene = myScene(size: self.size)
        var transition = SKTransition.doorsCloseHorizontalWithDuration(0.5)
        myscene.scaleMode = SKSceneScaleMode.AspectFill
        self.scene!.view?.presentScene(myscene, transition: transition)

    }
    if (contact.bodyA.categoryBitMask == bubbleCategory) {
        let node = contact.bodyB.node
        //Other remove routine
        node?.removeAllActions()
        node?.removeFromParent()
    } else if (contact.bodyB.categoryBitMask == bubbleCategory) {
        let node = contact.bodyB.node
        //Other remove routine
        node?.removeAllActions()
        node?.removeFromParent()
    }


}

这里的问题是什么?

1 个答案:

答案 0 :(得分:0)

这将呈现场景,每次都适合我。对于场景,这不会返回nil,因此它将平滑过渡。您还可以使用此行将ignoreSiblingOrder设置为您想要的任何内容:skView?.ignoresSiblingOrder = true //or false 这是我的GameScene:

class GameScene: SKScene {
override func didMoveToView(view: SKView) {
    self.backgroundColor = UIColor.redColor()
}

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch in (touches as! Set<UITouch>) {
        let location = touch.locationInNode(self)
        println("touch occured in gamescene")

        let scene:SKScene = myScene()
        let skView = self.view as SKView?
        skView!.ignoresSiblingOrder = true
        scene.scaleMode = .AspectFill
        scene.size = skView!.bounds.size
        skView!.presentScene(scene)


    }
}

override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
}

}