SpriteKit:一种将大型纹理列为缩略图的有效方法

Posted

技术标签:

【中文标题】SpriteKit:一种将大型纹理列为缩略图的有效方法【英文标题】:SpriteKit: An efficient way to list large textures as thumbnails 【发布时间】:2014-05-22 21:16:05 【问题描述】:

我有大约 100 张大图像(等于设备背景大小)需要在分类滚动面板中作为缩略图列出。一次大约十张图像。单击可用类别之一时,滚动面板会使用该类别中的图像纹理更新图像列表。当点击其中一张图片时,完整尺寸的图片会显示在滚动面板旁边的工作区中。

我实施的当前方法是加载原始大小的纹理并将它们按比例缩小以适应缩略图大小。当其中一个接收到触摸事件时,它会将自身(具有全尺寸纹理的精灵节点)复制到重新缩放的工作区。问题是单击类别按钮时列表需要很长时间才能加载。克服这个问题的最好方法是什么?我正在考虑构建一个缓存文件夹,在第一次启动应用程序时将所有图像缩小到缩略图大小,然后使用它们而不是原始大小的纹理,但这并不是最好的方法它。有没有更好的方法来实现这一点?

谢谢。

【问题讨论】:

你在使用纹理图集吗? 没有。由于它们都具有图集允许的最大尺寸 (2048 * 2048),因此不会有任何区别。再加上 Xcode 在这种情况下会显示错误。 这让你几乎没有选择。我认为你的结束想法值得一试。拥有单独的缩略图,将它们放入纹理图集中,并在触摸缩略图时加载全尺寸图像。您没有提到您对原始大小的图像使用哪种图像压缩。不用说,图片越小,加载时间就越快。 这需要手动制作,对吧?我的意思是,在应用程序运行时无法生成图集。我认为这是最后的选择。图像为 png 格式。对此有什么特别的建议吗? 最简单且可以说是最好的解决方案是简单地将缩略图添加到您的包(项目)中。如果您还允许下载图像,请在您的网络服务器上提供一个缩略图列表。任何设备上的处理都会导致不太理想的用户体验。 【参考方案1】:

根据您的描述,我认为最好的选择是为这些缩略图提供纹理图集。正如您所发现的,加载图像并即时生成缩略图需要时间。

【讨论】:

以上是关于SpriteKit:一种将大型纹理列为缩略图的有效方法的主要内容,如果未能解决你的问题,请参考以下文章

ffmpeg 制作缩略图的最有效方法? [视窗 10]

SpriteKit 丢失纹理

SpriteKit 示例游戏错误:纹理未加载?

“纹理图集不支持模板渲染”SpriteKit 和 Xcode

在 phpMyAdmin SQL 表中存储大型数据集的有效方法

SpriteKit 部分纹理映射