Как продолжить SKAction, когда приложение неактивно

Я работаю над приложением SKScene, и у меня есть один SKAction в моем приложении после установки чего-либо. Но после того, как я закрою приложение и переведу его в фоновый режим, что означает, что оно неактивно, SKAction останавливается. Поэтому я хочу знать, как заставить SKAction работать после того, как я закрою его, когда он неактивен. Большое спасибо!


person zh_Vincent    schedule 11.01.2015    source источник
comment
невозможно, skview приостановлен в фоновом режиме   -  person LearnCocos2D    schedule 11.01.2015


Ответы (1)


Как сказал LearnCocos2D, вы не можете запускать SKAction, когда приложение находится в фоновом режиме.

Однако, если вам нужно имитировать игру, которая продолжает работать даже в фоновом режиме, вы можете использовать этот подход:

  1. когда приложение переходит в фоновый режим, сохранить текущее время
  2. когда приложение возобновляет работу, рассчитайте время, в течение которого дельта находилась в фоновом режиме.
  3. вручную измените состояние игры в соответствии со значением дельта. Конечно, в зависимости от сложности вашей игры это может быть невозможно.

Надеюсь это поможет.

person Luca Angeletti    schedule 11.01.2015
comment
Можете ли вы дать мне более подробную информацию о том, как это сделать? Коды, наверное, подскажете? Я немного запутался. - person zh_Vincent; 13.01.2015
comment
Супер простой пример (ваш сценарий, вероятно, будет более сложным). Допустим, у вас есть SKAction, который перемещает спрайт A из верхней части экрана в нижнюю. Действие требует 3 минуты, чтобы переместить спрайт. Действие начинается, и через 1 минуту приложение переходит в фоновый режим. (здесь вы сохраняете текущее время 23:08)... - person Luca Angeletti; 15.01.2015
comment
Еще через минуту приложение возобновляет работу. Здесь вы получаете текущее время 23:09 и вычисляете, что приложение было в фоновом режиме в течение 1 минуты. Это означает, что спрайт А должен был пройти треть пути сверху вниз. Вы останавливаете текущее действие. Переместите спрайт на треть. Создайте новое действие, чтобы переместить его на последнюю треть экрана. Надеюсь, это понятно. - person Luca Angeletti; 15.01.2015
comment
И да, я знаю, это звучит безумно для игры :D - person Luca Angeletti; 15.01.2015
comment
а как узнать время после создания SKAction и его проведения. В вашем случае первая минута. - person zh_Vincent; 15.01.2015