使用变量更改 CGSize

Change CGSize with a variable

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

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
        } 
}   

您的代码无效,因为 self.size.widthCGFloat 并且 iDouble(与 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
    } 
}   

我 运行 这个 SKAction 代码而不是 ABakerSmith 建议的 for 循环,它看起来更清晰。

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