使用for循环显示4个纹理



我正在使用Swift 2.0Sprite-KitXcode7创建一款游戏。我想实现4个紫色的球,它们看起来像生命。所以每次玩家被击中,他就失去一个紫色的球。它们应该是并排出现的。我想知道,如果不是硬编码4个球到现场,我可以使用for loop来显示4个球。

let purpleBall = SKSpriteNode(texture: purpleTexture)
purpleBall.position = CGPointMake(self.frame.size.width * 0.65, self.frame.size.height * 0.92)
self.addChild(purpleBall)

我没有成功地让4个球出现在场景中。这是我的一次尝试。

for(var i = 0.50; i <= 0.90; i = i + 0.10) {
        let purpleBall = SKSpriteNode(texture: purpleTexture)
        purpleBall.position = CGPointMake(self.frame.size.width * i, self.frame.size.height * 0.92)
        self.addChild(purpleBall)
}

这里我得到一个错误:二进制操作符不能应用于'CGFloat'和'Double'类型的操作数我必须转换i CGFloat吗?这段代码实际上是将4个不同的球并排放置还是只将单个球移动到每个新位置?

您的代码在for循环中有一个off - 1错误。应该是小于号而不是小于等于号。您当前的代码将创建五个紫球。

你不应该让i等于任何东西,除了一个整数,这会让人困惑。你可以像这样重写代码,它会做同样的事情,而不用担心你目前得到的float/double错误。注意,我还将使用一个名为maxBalls的常量和distanceBetweenBalls,以便您可以轻松地更改球的数量和距离,而无需进行任何复杂的重写:

let maxBalls = 4
for(var i = 0; i < maxBalls; i++) {
    let purpleBall = SKSpriteNode(texture: purpleTexture)
    let ballXPosition = .50 + (i * .1)
    purpleBall.position = CGPointMake(self.frame.size.width * ballXPosition, self.frame.size.height * 0.92)
    self.addChild(purpleBall)

这样可以避免您之前遇到的问题,希望对您有所帮助。

最新更新