Постоянное изменение свойства цвета SKShapeNode во время игры (Swift)

У меня есть SKShapeNode var Circle = SKShapeNode(circleOfRadius: radius) на фоне моей игры spritekit, которая использует swift. Круг предназначен для эстетических целей, поэтому с ним ничего не взаимодействует. Я бы хотел, чтобы Circle.strokeColor постоянно менялся. Мой текущий код изменяет свойство цвета обводки SKShapeNode, но не отображает изменения цвета, потому что я изменяю свойство после того, как оно было добавлено к фону. Цвет остается неизменным на протяжении всей игры, пока игра не закончится, и круг не будет удален с фона, а затем воссоздан. Мой код изменяет цвет, добавляя 1 к var colorTime: CGFloat = 0.0 каждый раз, когда запускается функция обновления, а затем связывает значения RGB цвета круга с функциями косинуса, используя эту переменную colorTime. Как я могу постоянно менять (и отображать) цвет круга?

override func update(currentTime: CFTimeInterval) {


    if last_update_time == 0.0 {
        delta = 0
    } else {
        delta = currentTime - last_update_time
    }
    last_update_time = currentTime

    colorTime += 100
    redColor = (cos(colorTime/100)+1)/2
    greenColor = (cos(colorTime/200 - 2.09)+1)/2
    blueColor = (cos(colorTime/300 - 4.18)+1)/2
    circleColor = UIColor(red: redColor, green: greenColor, blue: blueColor, alpha: 1)
    Circle.strokeColor = circleColor
}

person Thomas Keegan    schedule 08.10.2015    source источник
comment
Протестировал ваш код, и он работает.   -  person WangYudong    schedule 08.10.2015
comment
спасибо, я как-то даже не понял, что это работает.   -  person Thomas Keegan    schedule 08.10.2015


Ответы (1)


Я не понимал, что этот код действительно работает. Единственная проблема заключалась в том, что игра вылетала после перезапуска игры, потому что я снова добавлял SKShapeNode в фоновый режим, даже не удаляя его. Я добавил Circle.removeFromParent() в свою функцию restartGame, и теперь все в порядке.

person Thomas Keegan    schedule 08.10.2015