Как анимировать непрозрачность SKShapeNode?

Я работаю над экраном инструкций своей игры и хочу показать пользователю, что он должен коснуться определенной области экрана.

Поэтому я хочу показать анимацию, где

1) Палец появляется и исчезает с экрана, а затем -- работает нормально--

2) Прямоугольник, изменяющий прозрачность (чтобы показать, чтобы коснуться его), а затем -- нужна помощь--

3) Мигающий текст "Нажмите здесь" -- нужна помощь--

Для 1) у меня есть (работает нормально):

    finger = SKSpriteNode(texture: fingerTxt)
    finger.position = CGPoint(x: 330, y: 450)
    finger.zPosition = 10
    InstHolderNode.addChild(finger)

    let fingerTapScaleDown = SKAction.scale(by: 0.6, duration: 0.7)
    let fingerTapScaleUp = SKAction.scale(by: 1.6, duration: 0.7)
    let fingerScalingSequence = SKAction.sequence([fingerTapScaleDown,fingerTapScaleUp])

    let fingerTapScaleForever = SKAction.repeatForever(fingerScalingSequence)
    finger.run(fingerTapScaleForever)

Для 2) у меня есть:

    var rect = SKShapeNode(rectOf: CGSize(width: 150.0, height: frame.height * 2))
    rect.position = CGPoint(x: 300, y: 100)
    rect.fillColor = SKColor.brown
    rect.alpha = 0.5
    InstHolderNode.addChild(rect)

Вопрос:

Как синхронизировать 1) и 2) таким образом, чтобы после завершения 1) (выполнена анимация постукивания пальцем) значение rect.alpha изменялось на 0.1, а затем снова меняется на 0.5, а затем происходит 1), а затем rect.alpha постоянно изменяется на 0.1 (в цикле).

Большое спасибо!!


person Has    schedule 29.09.2016    source источник
comment
Я собирался написать ответ, но это слишком много и должно быть что-то, что вы кодируете. Вы уже знаете о sequence. В конце вашей последовательности вы добавляете действие runBlock, чтобы запустить последовательность действий над прямоугольником, использующим fadeToAlpha. Затем в конце этого действия вы запускаете другой блок, запускающий действие fingerScaling. Не используйте повтор навсегда, это будет повторяться вечно для вас   -  person Knight0fDragon    schedule 29.09.2016
comment
Спасибо за быстрый ответ. Не могли бы вы подсказать мне, как изменить альфа-значение этого прямоугольника каждые 0,6 секунды после того, как действие нажатия пальца 1) происходит, пожалуйста? Спасибо !   -  person Has    schedule 30.09.2016
comment
тебе уже сказали как это сделать   -  person Knight0fDragon    schedule 30.09.2016
comment
Привет, я все еще новичок и пробовал это: pastebin.com/BZBFuqsA Исчезновение прямоугольника происходит только один раз и не непрерывно. Как я могу сделать его бесконечным, пока я не захочу, чтобы он остановился? Спасибо   -  person Has    schedule 02.10.2016
comment
Привет, я даже попробовал rect.run(fingerTapScaleForever)) и это скомпилировалось, но игра не заработала. Был бы признателен, если бы вы могли указать мне в правильном направлении, пожалуйста. Большое спасибо   -  person Has    schedule 05.10.2016
comment
Привет, извините за беспокойство. Я новичок и учусь по онлайн-урокам. Был бы признателен, если бы вы могли указать мне в правильном направлении, пожалуйста. Большое спасибо !   -  person Has    schedule 07.10.2016
comment
Проверьте мой ответ   -  person Aryan C    schedule 22.10.2016


Ответы (1)


Попробуй это:

    var fadeOut = SKAction.fadeAlpha(to: 0.1, duration: 0.5)
    var fadeIn = SKAction.fadeAlpha(to: 0.5, duration: 0.5)

    rect.run(SKAction.repeatForever(SKAction.sequence([fingerScalingSequence, fadeOut, fadeIn])))

Отрегулируйте продолжительность по своему вкусу

person Aryan C    schedule 19.10.2016
comment
Надеюсь это поможет - person Aryan C; 19.10.2016