动画GIF导致SplashScreen为空

我知道这可能接近这个post的重复: Splashscreen中的动画GIF

但是,因为它似乎没有答案,我无法评论它或任何我很抱歉重新发布这个,但如果有人能给我一个答案,那将是很棒的。

我正在制作游戏,这个游戏需要花费很多时间才能开始。 因此,我想在加载屏幕期间给用户反馈,以便他知道应用程序没有崩溃。 这就是我使用java 7中的SplashScreen API的原因。

在eclipse中,当我在VM Arguments中使用以下配置运行我的应用程序时, SplashScreen.getSplashScreen()返回null

-splash:src/aapplication/Splash.gif

但是当我使用这个配置时,它工作正常(我必须在同一个包中的文件,一个是Splash.png和另一个Splash.gif ):

-splash:src/aapplication/Splash.png

在jar文件中(在MANIFEST.MF ),这不起作用:

SplashScreen-Image: aapplication/Splash.gif

虽然这样做:

SplashScreen-Image: aapplication/Splash.png

我的GIF大小约为1Mb,而PNG大约为50kb。

任何人都可以向我解释为什么在PNG的情况下甚至无法加载GIF(我知道它不是路径,因为它们有相同的)?

我看到的每个地方都说它应该和PNG一样好用。

谢谢你的帮助!

我想你会发现问题归结为两件事……

  1. 使用命令行参数(-splash),Java期望映像是文件系统上的文件,而清单文件期望它是嵌入式资源。
  2. Java似乎无法播放优化的gif,即gifs,其帧代表最后一帧和当前帧之间的差异,而不是完整的图像(就闪屏而言)。

我试过用

Pony01

Pony02

第一张图片失败了,但是第二张图片工作了,差异就像我所知道的那样,第一张是优化的,第二张不是……