ios - 无尽的背景 Sprite 套件

标签 ios swift loops sprite-kit

我正在尝试使用 Ray Wenderlich 所著的 2D iOS & tvOS Games 书中的方法制作无尽的背景,并且我的游戏崩溃,原因是“尝试添加已经有父级的 SKNode”,因为子级已经开启场景和循环尝试再次添加它,但我不知道如何修复它。

谢谢!

    func backgroundNode() -> SKSpriteNode {
    // 1
    let backgroundNode = SKSpriteNode()
    backgroundNode.anchorPoint = CGPoint.zero
    backgroundNode.name = "background"
    // 2
    background1.anchorPoint = CGPoint.zero
    background1.size = self.frame.size
    background1.position = CGPoint(x: 0, y: 0)
    backgroundNode.addChild(background1)
    // 3
    background2.anchorPoint = CGPoint.zero
    background1.size = self.frame.size
    background2.position =
        CGPoint(x: background1.size.width, y: 0)
    backgroundNode.addChild(background2)
    // 4
    backgroundNode.size = CGSize(
        width: background1.size.width + background2.size.width,
        height: background1.size.height)

    return backgroundNode
}

for i in 0...1 {
let background = backgroundNode()
background.anchorPoint = CGPointZero
background.position =
CGPoint(x: CGFloat(i)*background.size.width, y: 0)
background.name = "background"
addChild(background)
}

最佳答案

您循环了 for 循环两次,因此您添加了同一个子项两次。

将 for 循环的第一行更改为:for i in 0..<1 {

使用 for i in x...y 时您从 x 开始,一直到并包括 y。

关于ios - 无尽的背景 Sprite 套件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37752416/

相关文章:

ios - 用户uid错误! (Swift 和 Firebase 项目)

ios - appium 服务器端错误 : xcodebuild failed with code 65

ios - 混合 iOS 网络和 native 应用程序事件的通信

java - 使用 Java 中的用户输入循环程序

java - 函数方法

ios - Swift编译器无法在合理的时间内对这种表达式进行类型检查。尝试将表达式分解为不同的子表达式

ios - 如何以编程方式快速使用 CAGradientLayer 将渐变设置为 UIView( subview )?

ios - 导航栏的右侧按钮丢失

swift - Firebase 请求方法后 Object = nil

c - 直线与圆柱(环)相交的截距长度