【发布时间】:2014-01-21 06:44:56
【问题描述】:
我创建了一个 SKSpriteNode 作为我场景中的唯一节点。它展示了一只 120 x 75 像素的小乌龟在跳舞。
乌龟有 100 个舞格。我可以在 Finder 中逐步浏览帧并看到完美的平滑动作。
现在我在 Sprite Kit 中做了可笑的简单测试。纹理图集上的所有帧。在应用程序启动时,我生成 SKTextureAtlas 对象,然后将所有 SKTexture 对象预加载到序列数组中。在每一帧上,我在海龟节点上调用 -next。然后它简单地从数组中抓取下一个 SKTexture 并将其设置为当前纹理。
动画不流畅。 iPhone 5S 说 60 帧/秒。但我看到会发生随机丢帧。
我尝试使用 PVR 进行压缩。然后我尝试不使用地图集。还尝试调用 SKTextureAtlas 的 preload 方法。还是不流畅。它只是不会显示具有相同帧持续时间的所有纹理帧以获得平滑的外观。
然后我做了更简单的测试。一次移动一个像素和 100 个纹理的进度条。还是不流畅。我的应用程序中没有其他任何事情发生,它是 iPhone 5S。
更简单的测试:
SKAction *a = [SKAction moveByX:0 y:-300 duration:30];
[self runAction:a];
您会不时注意到跳跃或打嗝。即使有这个非常简单的动画。也没有 NSLog 或控制台写入。与 Mac 断开设备连接时也是如此。
这是 Sprite Kit 的限制,您不应该使用非常大的动画序列,因为即使在 60 fps 下,Sprite Kit 帧渲染时间也会发生很大变化?
【问题讨论】:
-
您是否设法使用 PVR 而没有 atlas 进行压缩?如果是这样,你能指点我一些文档吗?
标签: ios iphone sprite-kit