2015-06-19 2 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 код вместо для цикла предложил ABakerSmith и это выглядит намного ровнее.

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

Ваш код не работает, потому что self.size.width является CGFloat и i является Double (то же самое с self.size.height и k). 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

Прекрасно работает человек, спасибо большое. Мне приходилось корректировать размер несколько раз, потому что он исчезает, но я отлично смотрю. –

Смежные вопросы