我的问题是,当我尝试使用 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 */
}
}
最佳答案
presentScene
是SKView
的方法,不是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 秒的交叉淡入淡出过渡。但还有许多其他转换可供选择。
关于ios - presentScene() 不是 SKScene 的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35110305/