【问题标题】:Loading only visible areas of a large image in cocos2d在 cocos2d 中仅加载大图像的可见区域
【发布时间】:2012-03-21 02:39:31
【问题描述】:

我们正在使用 cocos2d 显示一个大图像,该图像由 iPhone/iPad 应用程序中的三个不同视差层组成。用户将能够平移这个大图像。

这些图像的宽度约为 13000 像素,因此我们担心内存使用情况。 理想情况下,我们希望将图像网格化并根据当前可见的内容加载它的子部分。

cocos2d 是否包含任何对我们有帮助的东西? 我们已经研究过使用平铺地图(我们有一个在 CCTMXTiledMap 上运行的原型),但看起来这实际上并不是平铺地图的一个很好的应用,因为它们通常用于大型地图/图像,由重复较小的图像;而我们大图像中的每个图块都是独一无二的。

有人对最好的方法有什么好主意吗?

【问题讨论】:

    标签: iphone ios cocos2d-iphone image-loading


    【解决方案1】:

    我记得在博客上看到一篇文章,其中 iPhone 程序员在屏幕滚动时在后台线程上加载图像。他说只要滚动不是太快,实现平滑滚动是没有问题的。

    您基本上是根据屏幕滚动的位置加载图像的各个部分,并取消分配离开屏幕边框的图像。所以会有屏幕本身,以及屏幕边缘周围的边框作为缓冲区,以防玩家来回(左或右等)。

    我希望我能找到链接,但搜索了 30 分钟后我放弃了。我确实看过他的视频,而且滚动非常流畅。

    【讨论】:

    • 是的,这是我昨晚实现的。当您四处移动时,我们仍然会感到有些紧张。但我可以通过预先缓存纹理或放入更多缓冲区并将它们加载到后台来解决这个问题。
    • 也许将屏幕分成 9 或 12 个矩形,然后将缓冲区完全放置在与一个矩形大小匹配的边缘周围。随着玩家的移动,加载新的缓冲区。一个好的测试是移动对角线然后水平或垂直以测试加载速度。我会在多台设备上进行测试,因为模拟器绝对不是一个好的测试平台。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多