问题描述
总结
Java 应用程序使用 jMonkey 进行渲染。此应用程序在查看模式下加载自定义图标。使用的图标是 32x32 并且像这样加载,因为它是一个光标:
JmeCursor cursor = (JmeCursor) Services.getAssetManager().loadAsset( "/path/someIcon.ico" );
其中 Services
只是一些不相关的类来检索 jMonkey AssetManager
。
我了解了典型的 .ico
尺寸,其中之一似乎是 96x96。但是,当尝试使用上面的代码片段将 96x96 .ico
文件作为资产加载时,我遇到了 jMonkey 无法加载资产的情况,即使根据调试器输出确实找到了资源。
在使用调试器进行检查时,我可以将加载过程跟踪到 DesktopAssetManager#loadAsset
中,直到它深入到我看不到的类中,然后显示没有有用的堆栈跟踪、消息或其他信息的 Throwable
.当我切换到任何其他 32x32 .ico
文件时,一切正常。
问题
开始追逐:
jMonkey 是否能够通过 .ico
加载 96x96 loadAsset
文件作为资产?
解决方法
是的。我使用以下 imagemagick 命令创建了一个 .ico(并添加了一个 96x96 选项):
convert image.png -bordercolor white -border 0 \
\( -clone 0 -resize 16x16 \) \
\( -clone 0 -resize 32x32 \) \
\( -clone 0 -resize 48x48 \) \
\( -clone 0 -resize 64x64 \) \
\( -clone 0 -resize 96x96 \) \
-delete 0 -alpha off -colors 256 favicon.ico
ImageMagick:https://imagemagick.org/
使用 assetManager.loadAsset() 加载没有问题