动画GIF导致SplashScreen为空

时间:2014-04-11 00:08:36

标签: java awt manifest splash-screen animated-gif

我知道这可能接近这个帖子的副本:Animated GIF in Splashscreen

但是,由于它似乎没有答案,我无法对其进行评论或任何我很抱歉重新发布此内容但如果有人能给我一个答案那就太棒了。

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

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

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

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

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

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

    Pony01

    Pony02

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