2017-08-14 62 views
0

我正在用LibGDX库(来自badlogicgames)创建一个游戏,我遇到了一些关于我的精灵的疑问。Java - 从SVG到PNG以编程方式

为了支持不同的屏幕尺寸,我们通常创建像4或6个不同大小的图像。我想知道是否使用像SVG文件的矢量图像可能会有用。

以编程方式获取SVG文件,获取屏幕尺寸,然后创建一个合适的PNG文件,并考虑屏幕尺寸是否很明智?

如果唯一的问题是性能,差异是否显着?也许在应用程序开始时创建所有PNG图像需要3或4秒,但对于前向图形来说更好。

我听说过蜡染为达到这个目的,有没有人试过这个?

有没有人有这种东西的经验,可以帮助我?

+0

Android支持库现在支持矢量图像。库缓存图像,所以它们只转换一次。文档确实说明由于内存问题,它只能用于相对较小的图像。 – lionscribe

+0

@lionscribe Android支持库不支持SVG文件。它支持VectorDrawables,它们不一样。 SVG文件的一个子集可以转换为VectorDrawable文件。 –

+0

正确。我想要的最重要的点是记忆问题。全尺寸的图像会让你的记忆成为可能。一个简单的想法是,您将图像文件保存到第一次运行缓存文件,所以通常不必再次创建它们,也不需要在内存中存储大图像。 – lionscribe

回答

0

蜡染将适用于一般的Java应用程序。但我不相信它支持Android,因为它使用了Android没有的标准Java2D方法。

但是也有针对Android库,可让您呈现SVG文件:

声明:我是AndroidSVG的作者

+0

因此,我将SVG放在我的资产文件夹中,我将它们转换成带有AndroidSVG的PNG文件,然后将它们保存在游戏的缓存中。那么,为了完成辩论,你有一个关于在缓存中保存PNG文件的教程吗?非常感谢 ! –

+0

有一个如何在[AndroidSVG网站](http://bigbadaboom.github.io/androidsvg/)上从SVG创建位图的示例。您唯一需要做的就是保存为PNG格式。 –

+0

如何从Android Studio中的libGDX项目实现AndroidSVG? –