Sprite Kit场景不会出现
我目前正在制作一个由三个场景组成的游戏,GameScene,ArcheryScene和GameOverScene。当我开始游戏时,GameScene呈现得很好,然后我点击屏幕开始游戏,ArcheryScene呈现得很好。 GameOverScene在游戏中进行联系时被触发,并且它也可以工作。但是,一旦呈现GameOverScene,我希望能够点击屏幕返回到射箭场并重新开始游戏。但是,当我点击屏幕时,根本没有任何反应。任何意见或建议将不胜感激,谢谢。触碰时会呈现ArcherySceneSprite Kit场景不会出现
GameScene代码:(作品)
import UIKit
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
/* Setup your scene here */
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
let welcomeNode = childNodeWithName("welcomeNode")
if (welcomeNode != nil) {
let fadeAway = SKAction.fadeOutWithDuration(1.0)
welcomeNode?.runAction(fadeAway, completion: {
let doors = SKTransition.pushWithDirection(SKTransitionDirection.Down, duration: 1.0)
let archeryScene = ArcheryScene(fileNamed: "ArcheryScene")
archeryScene.scaleMode = .AspectFill
self.view?.presentScene(archeryScene, transition: doors)
})
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
呈现时,接触时的GameOverScene
ArcheryScene代码:(作品)
let fadeOut = SKAction.sequence([SKAction.waitForDuration(3.0)])
let welcomeReturn = SKAction.runBlock({
let Transition = SKTransition.revealWithDirection(SKTransitionDirection.Down, duration: 1.0)
let gameOverScene = GameScene(fileNamed: "GameOverScene")
gameOverScene.scaleMode = .AspectFill
self.scene!.view?.presentScene(gameOverScene, transition: Transition)
})
let sequence = SKAction.sequence([fadeOut, welcomeReturn])
self.runAction(sequence)
GameOverSceneCode呈现的ArcheryScene当点击:(不起作用)
import UIKit
import SpriteKit
class GameOverScene: SKScene {
override func didMoveToView(view: SKView) {
/* Setup your scene here */
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
/* Called when a touch begins */
let gameOverNode = childNodeWithName("gameOverNode")
if (gameOverNode != nil) {
let fadeAway2 = SKAction.fadeOutWithDuration(1.0)
gameOverNode?.runAction(fadeAway2, completion: {
let doors2 = SKTransition.pushWithDirection(SKTransitionDirection.Down, duration: 1.0)
let archeryScene = ArcheryScene(fileNamed: "ArcheryScene")
archeryScene.scaleMode = .AspectFill
self.view?.presentScene(archeryScene, transition: doors2)
})
}
}
override func update(currentTime: CFTimeInterval) {
/* Called before each frame is rendered */
}
}
gameOverNode does nt存在。你说的let gameOverNode = childNodeWithName("gameOverNode")
.. gameOverNode是零!这没什么,并且条件语句中的代码块不会做任何事情。
您需要添加名为“gameOverNode”的节点才能引用它。 childNodeWithName
引用了一个已经存在于你的场景中的节点..它没有创建一个新节点。
但是gameOverNode确实存在。就像welcomeNode存在于GameScene文件中一样。并且为了证明这不是问题,我将if语句语句更改为:'if(gameOverNode == nil)',但仍然没有使代码运行。那么我完全把if语句拿出来了,它仍然不起作用,还有其他建议吗? – BCRwar1
在gameOverNode中放置了一个println?.runAction 在日志中显示了什么? – hamobi
我刚刚试过你说的话,没有出现在日志中。我也尝试在gameOverNode?.runAction之外放置println,它位于touchesBegan()函数的正下方。当我在屏幕上点击时没有出现在日志中..我无能为力,为什么这不起作用。我看不到任何我做错了的事情。 – BCRwar1
触摸事件是否运行?设置一个断点来找出。 – LearnCocos2D
我只是试过这个,触摸甚至没有运行 – BCRwar1
然后在您的射箭代码中设置self.userInteractionEnabled = YES – LearnCocos2D