【问题标题】:Displaying 4 textures using for loop使用 for 循环显示 4 个纹理
【发布时间】:2015-10-01 16:08:45
【问题描述】:

我正在使用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 个不同的球还是仅将单个球移动到每个新位置。

【问题讨论】:

  • "我必须将 i 转换为 CGFloat 吗?"是的。不能随便试试吗?您必须先占用 Stack Overflow 带宽吗? “并且此代码实际上会并排放置 4 个不同的球,还是仅将单个球移动到每个新位置” 同样的问题。你为什么不试试看呢?作为一个行为如此愚蠢的程序员,你将一事无成。程序员尝试一些东西

标签: swift for-loop sprite-kit swift2


【解决方案1】:

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

你真的不应该让 i 等于除整数之外的任何东西,这会造成混淆。您可以像这样重写代码,它会做同样的事情,而不必担心您当前遇到的浮点/双精度错误。请注意,我还将使用一个名为 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)

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

【讨论】:

  • 我制作并编辑。 i 的值为 int 但 .1 是双精度值。我遇到了一个错误,解决方案是使 maxBallsballXPositioni 成为 CGFloat
猜你喜欢
  • 1970-01-01
  • 2014-05-24
  • 2021-12-27
  • 1970-01-01
  • 2021-12-04
  • 1970-01-01
  • 2019-10-08
  • 2019-12-26
  • 2018-11-28
相关资源
最近更新 更多