2015-06-19 52 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

非常感謝您的工作。我不得不幾次調整大小,因爲它消失了,但我看起來很棒。 –