在我的xcode项目中,我正试图从一个SKScene过渡到另一个。触发转换的原因是触摸SKLabelNode。所有这一切都正常。但是在场景改变后,我的类中没有任何代码控制着" StartScence.sks"作品。好像我的" StartScene.swift"和我的" StartScene.sks"没有联系。
这是我的GameScene中的代码,
import SpriteKit
class GameScene: SKScene {
var isTouched: Bool = false
var booleanTouched: Bool!
let ns = SKScene(fileNamed: "StartScene")
let crosswf = SKTransition.crossFadeWithDuration(2)
override func didMoveToView(view: SKView) {
let backgroundimage = SKSpriteNode(imageNamed: "ipbg")
backgroundimage.size = CGSize(width: self.frame.size.width, height: self.frame.size.height)
backgroundimage.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2)
addChild(backgroundimage)
let playButton = SKLabelNode(fontNamed: "")
playButton.name = "play"
playButton.position = CGPoint(x: self.frame.size.width / 2, y: self.frame.size.height / 2 + 100)
playButton.text = "Play"
let wait = SKAction.waitForDuration(2)
let run = SKAction.runBlock({
let randomNumber = Int(arc4random_uniform(UInt32(4)))
switch(randomNumber){
case (0):
playButton.fontColor = UIColor.blueColor()
case 1:
playButton.fontColor = UIColor.yellowColor()
case 2:
playButton.fontColor = UIColor.purpleColor()
case 3:
playButton.fontColor = UIColor.orangeColor()
default: print("default")
}
})
addChild(playButton)
var repeatActionForever = SKAction.repeatActionForever(SKAction.sequence([wait, run]))
runAction(repeatActionForever)
backgroundimage.zPosition = 1
playButton.zPosition = 2
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first! as UITouch
let touchLocation = touch.locationInNode(self)
let touchedNode = nodeAtPoint(touchLocation)
if (touchedNode.name == "play"){
scene!.view?.presentScene(ns!, transition: crosswf)
}else{
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
这是我的&#34; StartScene.swift&#34;那不是控制&#34; StartScene.sks&#34;正常。
import SpriteKit
class StartScene: SKScene {
override func didMoveToView(view: SKView) {
print("Scene Loaded")
}
}
答案 0 :(得分:2)
有两件事需要注意。
在您的代码中,您当前正在加载.SKS文件,如下所示
let ns = SKScene(fileNamed: "StartScene")
您的新场景将加载,因为所有SKS文件都属于SKScene类。 但是,它只会使用该类中的代码。
如果您希望使用类StartScene(SKScene的子类)中的代码加载它。将行更改为此
let ns = StartScene(fileNamed: "StartScene")
在Xcode中打开SKS文件,以便为场景提供自定义类。在场景编辑器中并没有选择任何内容。单击实用程序区域,切换到自定义类检查器,这是右侧的最后一个选项卡。
给它一个自定义的StartScene类。
它应该有用。