presentScene()不是SKScene的成员

时间:2016-01-31 04:22:13

标签: ios swift sprite-kit

我的问题是,当我尝试使用self.scene?.presentScene()移动到我的下一个场景时,会弹出一条错误消息,并说'presentScene不是SKScene的成员'。

import SpriteKit

class GameScene: SKScene {
    override func didMoveToView(view: SKView) {
        /* Setup your scene here */
        backgroundColor = SKColor.blackColor()
        let start = SKLabelNode(fontNamed: "Chalkduster")
        start.position = CGPoint (x: self.frame.width/2-75, y: self.frame.height/2+100)
        start.fontSize = 35
        start.text = "Start"
        addChild(start)
            }

    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
       /* Called when a touch begins */
        let MyScene = SecondScene(size: self.size)
        MyScene.scaleMode = scaleMode
        self.scene?.presentScene(MyScene)

    }

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

1 个答案:

答案 0 :(得分:1)

presentSceneSKView的方法,而不是SKScene

所以要加载一个新场景你应该写这样的东西

class GameScene: SKScene {
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        let myScene = SecondScene(size: self.size)
        myScene.scaleMode = scaleMode
        self.view?.presentScene(myScene)
    }
}

过渡

您还可以使用过渡效果显示新场景。在这种情况下,使用一种方法并将SKTransition作为第二个参数传递。

self.view?.presentScene(myScene, transition: SKTransition.crossFadeWithDuration(1))

在上面的示例中,我使用持续时间为1秒的Cross Fade过渡。但是还有许多其他过渡可供选择。