2015-06-19 51 views
-1

我想用一个变量来改变我的SKNode的大小,所以它可以用一个for循环变小。这是给我的错误:用一个变量改变CGSize

Cannot find an initializer for type 'CGSize' that accepts an argument list of type '(width:... , height:...)'

for (var i = 0.9; i > 0.0; i -= 0.1){ 
      for (var k = 1.25; i > 0.0; i -= 0.1){ 

       self.sun.size = CGSize(width: self.size.width * i, height: self.size.height * k) // error here 
     } 
} 
+2

这是一个无限循环,你应该使用'反正for'循环一样,...它甚至没有任何意义,因为你反正阴影了你的循环变量.... – nhgrif

+0

问题可能与你试图增加'CGFloat'和'Double'有关。另外,由于您使用的是Sprite Kit,因此您可以使用SKAction来更改节点的大小。 – ABakerSmith

+0

为循环编辑是合理的。我会尝试SKAction,看看它是否有效。 –

回答

0

我跑这SKAction代码,而不是一个for循环所建议的ABakerSmith,它看起来会更加清晰。

var shrinkSun = SKAction.scaleBy(0.5, duration: 2) 
self.sun.runAction(shrinkSun) 
0

您的代码不起作用,因为self.size.widthCGFloatiDouble(同样与self.size.heightk)。 CGFloat不能乘以Double。尝试下面的代码。

for (var i = CGFloat(0.9); i > 0.0; i -= 0.1){ 
     for (var k = CGFloat(1.25); i > 0.0; i -= 0.1){ 

      self.sun.size = CGSize(width: self.size.width * i, height: self.size.height * k) // error here 
     } 
    } 

我用Xcode 7和Swift 2.0测试过它。在万一出错代码下面肯定会工作

for (var i = 0.9; i > 0.0; i -= 0.1){ 
     for (var k = 1.25; i > 0.0; i -= 0.1){ 

      self.sun.size = CGSize(width: self.size.width * CGFloat(i), height: self.size.height * CGFloat(k)) // error here 
    } 
} 
+0

非常感谢您的工作。我不得不几次调整大小,因为它消失了,但我看起来很棒。 –