作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我的英雄节点与敌人接触时,我试图暂停我的背景。当我使用我在下面发布的这段代码时,背景速度不会停止,它会保持正常速度。我尝试仅在全局范围内声明“城市”,但收到一条错误消息:Attempted to add a SKNode which already has a parent
。我做错了什么?
class GameScene: SKScene, SKPhysicsContactDelegate {
let city = SKSpriteNode(imageNamed: "skyline")
}
override func didMoveToView(view: SKView) {
repeatCity()
}
func addCity() {
let city = SKSpriteNode(imageNamed: "skyline")
let moveToRight = SKAction.moveByX(-1000, y: 0, duration: 5.0)
let repeatAction = SKAction.repeatActionForever(moveToRight)
city.position = CGPointMake(self.size.width / 0.7, self.size.height / 1.9)
city.zPosition = 13
city.setScale(0.9)
city.runAction(repeatAction)
addChild(city)
}
func repeatCity() {
let generateBlocks = SKAction.sequence([
SKAction.runBlock(self.addCity),
SKAction.waitForDuration(3.5)])
let endlessAction = SKAction.repeatActionForever(generateBlocks)
runAction(endlessAction)
}
func didBeginContact(contact:SKPhysicsContact){
if firstBody.categoryBitMask == HeroCategory && fourthBody.categoryBitMask == EnemyCategory {
city.speed = 0
theHero.physicsBody?.affectedByGravity = true
println("contactwithEnemy!!!")
}
}
最佳答案
第一个问题是,您声明了一个类变量 city
,但是在您的 add
方法中您使用的不是类变量,而是一个自己的城市变量。所以你应该删除那个类变量:
let city = SKSpriteNode(imageNamed: "skyline")
现在,您在 city
节点上永远重复的操作一直在运行。要停止该操作,您应该从联系人处的 city
节点中删除所有操作:
self.removeAllActions()
关于swift - 当我的 heroNode 与 Swift Spritekit 中的 enemyNode 接触时,我如何暂停我的背景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30128464/
当我的英雄节点与敌人接触时,我试图暂停我的背景。当我使用我在下面发布的这段代码时,背景速度不会停止,它会保持正常速度。我尝试仅在全局范围内声明“城市”,但收到一条错误消息:Attempted to a
我是一名优秀的程序员,十分优秀!