2016-10-07 3 views
3

У меня есть приложение, использующее SpriteKit. Я сделал простой переход, используя SKEffectNode, который имеет CIFilter, который я применяю setValue для изменения параметров фильтра при каждом обновлении (используя встроенный метод набора SpriteKit) в соответствии с некоторыми функциями.CIFilter не обновляется после setValue в iOS 10

Это отлично работало на iOS 9 и до того, как я обновился до Swift 3, хотя я не думаю, что версия Swift имеет к этому какое-то отношение.

Теперь я получаю кадр с первым значением параметра, который сохраняется до окончательного значения параметра. Что изменилось с iOS 9 до iOS 10 здесь?

ответ

1

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

Настройка shouldEnableEffects на true после каждого вызова setValue исправлена ​​проблема, поэтому я вижу, что фильтр изменяется при каждом обновлении. Не уверен, что это взлом, или если что-то изменилось в SpriteKit или iOS 10 по соображениям производительности или оптимизации.

+0

Если вы используете NSTimer, что может вызвать проблемы, невозможно гарантировать правильную синхронизацию между NSTimer и обновлением экрана – Knight0fDragon

+0

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

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