xcode - 从spriteKit Swift4中的父节点删除子节点时出错
问题描述
我做了一个视差背景,在 GameScene.sks 我添加了一个空节点,将两个精灵添加到一个空节点。我有一个重置按钮,当我单击它时,我需要删除背景并将其添加到其位置(重新启动),但是当我添加 scrollBg.removeAllChildren 重新启动功能时出现错误,如何正确添加和删除子项现场 ?
import SpriteKit
import GameplayKit
class GameScene: SKScene {
var player: SKSpriteNode!
var scrollBg: SKNode!
var spawnTimer: CFTimeInterval = 0
let fixedDelta: CFTimeInterval = 1.0/60.0 /* 60 FPS */
let scrollSpeed: CGFloat = 700
var sinceTouch: CFTimeInterval = 0
func resetGameScene() {
scrollBG.removeAllChildren()
player.removeAllChildren()
player.position = CGPoint(x: 590 , y: 690)
pauseButton()
}
override func didMove(to view: SKView) {
physicsWorld.contactDelegate = self
player = childNode(withName: "player") as? SKSpriteNode
scrollBg = childNode(withName: "scrollBG")!
resetGameScene()
}
func scrollWorld() {
scrollBg.position.y -= scrollSpeed * CGFloat(fixedDelta)
for ground in scrollBg.children as! [SKSpriteNode] {
let groundPosition = scrollBg.convert(ground.position, to:
self)
if groundPosition.y <= -ground.size.width {
let newPosition = CGPoint(x: groundPosition.x, y:
(self.size.width ) + ground.size.width * 2)
ground.position = self.convert(newPosition, to:
scrollBg)
}
}
}
override func update(_ currentTime: TimeInterval) {
sinceTouch+=fixedDelta
spawnTimer+=fixedDelta
scrollWorld()
}
}
解决方案
推荐阅读
- java - 如何在android中向xml文档发出http post请求
- python - django.core.exceptions.FieldError:为员工指定的未知字段(用户名)
- coffeescript - Hubot 多条消息
- javascript - 将 react 应用上传到 heroku 以安装 devDependencies
- java - 将多个 if-else 转换为 java 中的简单 Lambda 表达式代码
- node.js - 无法在 TypeScript 中扩展 Express 请求
- python - 从mysql服务器错误中提取文本[]
- python - __init__.py 中断 pyinstaller 时如何正确导入文件
- android - 对话框中的顶部圆角
- python - PySide2 极坐标轴显示不正确