【问题标题】:CIFilter not updating after setValue in iOS 10在 iOS 10 中的 setValue 后 CIFilter 未更新
【发布时间】:2017-02-16 00:11:54
【问题描述】:

我有一个使用 SpriteKit 的应用程序。我使用具有 CIFilter 的 SKEffectNode 进行了简单的转换,我应用 setValue 根据某些功能在每次更新时更改过滤器的参数(使用 SpriteKit 的内置更新循环方法)。

这在 iOS 9 上运行得非常好,在我升级到 Swift 3 之前,虽然我不认为 Swift 版本与它有任何关系。

现在,我得到一个带有第一个参数值的帧,它一直持续到最终的参数值。这里从 iOS 9 到 iOS 10 发生了什么变化?

【问题讨论】:

    标签: ios sprite-kit cifilter


    【解决方案1】:

    我注意到我在计时器开始时启用了 shouldEnableEffects,并在结束时禁用了它,这与我在屏幕上观察到的过滤器值相对应。

    在每次调用 setValue 解决问题后将 shouldEnableEffects 设置为 true,这样我就可以看到每次更新时都会更改过滤器。不确定这是否是 hack,或者是否出于性能或优化原因在 SpriteKit 或 iOS 10 中进行了某些更改。

    【讨论】:

    • 如果您使用的 NSTimer 可能会导致问题,则无法保证 NSTimer 和屏幕更新之间的正确同步
    • @Knight0fDragon 有道理,但我使用的是 SpriteKit 内置的更新方法,所以它应该在更新渲染循环中。我将编辑问题以使其更清楚。
    猜你喜欢
    • 2019-11-21
    • 2017-02-02
    • 2017-03-26
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 2010-10-03
    • 1970-01-01
    • 2017-03-13
    相关资源
    最近更新 更多