【发布时间】:2013-12-16 23:02:33
【问题描述】:
目前我在一个客户网站上,他们希望实验室允许用户设计完全定制的游戏控制器。为了减少加载次数并使事情变得更快,我决定将所有图像放入 1 个巨大的精灵中。虽然在快速连接上只有几秒钟的等待时间,但较慢的连接可能是几分钟。
我正在处理的 sprite 为 4305x3945,约 15MB,并且随着添加更多选项而变得更大。附带说明一下,客户希望提供 PS4、Xbox 360 和 Xbox One,这需要 3 个类似大小的精灵(仅加载请求)。
目前我只是加载整个精灵并使用 drawImage 剪切出我需要的部分,而且速度非常快。
所以我想我的问题是减少加载时间的最有效方法是什么?我是否应该允许用户使用半功能实验室,说大约 40% 的选项负载?我是否应该有一个一半大小的基本精灵并提供加载更多外壳的选项(在另一个精灵中)?或者我应该将所有图像分离到它们自己的文件中,并且仅在需要该特定项目时才加载(每个 shell 约 0.2-2.5 秒)?
这是最大的精灵的样子:
【问题讨论】:
-
.jpg 而不是 .png,而用户正在设计,然后 ajax .png 用户的最终选择?
-
如果可能的话,我想保持透明背景。否则,非方形对象将具有奇怪的渲染颜色。或者我应该让画布将纯白色像素操作为不可见?
-
你能得到原始文件吗,必须是矢量格式,矢量文件可能会更便宜。如果您单独处理颜色(/颜色渐变);你只能有一个矢量文件,然后在绘制时添加颜色。
-
@Steven10172 Jpeg 通常在对比度边缘附近没有纯白色像素。在 jpeg 上使用颜色键可能看起来更糟。
-
@GameAlchemist 我有原始文件。它只是 1 个控制器外壳,在 Photoshop 中修改了色调和其他内容,看起来像不同的颜色,但保持相同的确切形状。
标签: canvas html5-canvas png sprite