- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 2 个 AssetManager 实例:一个用于基本纹理,一个用于高质量纹理。基本纹理位于“android/assets”文件夹中,高质量纹理打包在 zip 文件中。此文件夹中的内容(文件名)是相同的 - zip 存档中只有质量更好的纹理。
当我尝试从 zip 文件加载 TextureAtlas 时,AssetManager 抛出异常:“无法加载 Assets 的依赖项:teamLogo.png”。当我加载纹理文件时,一切正常。加载 TextureAtlas 仅适用于“android/assets”文件夹。
AssetManager 使用“android/assets”——一切正常:
AssetManager am = new AssetManager();
am.load( "images/image.png", Texture.class );
am.load( "images/teamLogo.pack", TextureAtlas.class );
AssetManager 使用 zip 存档 - 无法加载 TextureAtlas:
ZipFile archive = new ZipFile(expansionFileHandle.file());
ArchiveFileHandleResolver resolver = new ArchiveFileHandleResolver(archive);
AssetManager amHQ = new AssetManager(resolver);
这很好用:
amHQ.load( "images/image.png", Texture.class );
这行不通:
amHQ.load( "images/teamLogo.pack", TextureAtlas.class );
存档文件句柄类:
public class ArchiveFileHandle extends FileHandle
{
final ZipFile archive;
final ZipEntry archiveEntry;
public ArchiveFileHandle (ZipFile archive, File file)
{
super(file, FileType.Classpath);
this.archive = archive;
archiveEntry = this.archive.getEntry(file.getPath());
}
public ArchiveFileHandle (ZipFile archive, String fileName)
{
super(fileName.replace('\\', '/'), FileType.Classpath);
this.archive = archive;
this.archiveEntry = archive.getEntry(fileName.replace('\\', '/'));
}
@Override
public FileHandle child (String name)
{
name = name.replace('\\', '/');
if (file.getPath().length() == 0)
return new ArchiveFileHandle(archive, new File(name));
return new ArchiveFileHandle(archive, new File(file, name));
}
@Override
public FileHandle sibling (String name)
{
name = name.replace('\\', '/');
if (file.getPath().length() == 0)
throw new GdxRuntimeException("Cannot get the sibling of the root.");
return new ArchiveFileHandle(archive, new File(file.getParent(), name));
}
@Override
public FileHandle parent ()
{
File parent = file.getParentFile();
if (parent == null)
{
if (type == FileType.Absolute)
parent = new File("/");
else
parent = new File("");
}
return new ArchiveFileHandle(archive, parent);
}
@Override
public InputStream read ()
{
try
{
return archive.getInputStream(archiveEntry);
}
catch (IOException e)
{
throw new GdxRuntimeException("File not found: " + file + " (Archive)");
}
}
@Override
public boolean exists()
{
return archiveEntry != null;
}
@Override
public long length ()
{
return archiveEntry.getSize();
}
@Override
public long lastModified ()
{
return archiveEntry.getTime();
}
我做错了什么?
最佳答案
是的,我找到了 :) ArchiveFileHandle 无法加载 TextureAtlas 的依赖项,因为他找不到那些文件。查看 zip 存档时,您必须将“\”字符替换为“/”。该错误存在于 ArchiveFileHandle 构造函数之一中。这一行:
archiveEntry = this.archive.getEntry(file.getPath());
应该是:
archiveEntry = this.archive.getEntry(file.getPath().replace('\\', '/'));
现在一切正常
关于java - 无法通过 AssetManager - libgdx 从 zip 存档加载 TextureAtlas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38018352/
我正在重构我在 libgdx 中开发的小型 RPG。 我有一个关于如何正确使用纹理图集的一般性问题。我有大约 100 名 Actor 和大约 10 种 Sprite 。目前我不使用图集,但我想提高渲染
我是游戏开发的新手,想开发一款手机游戏。我正在尝试在 libgdx 中制作一个复杂的动画,它由近 300 张图像组成(每张 655∼∼∼1160,总大小为 42MB)。 textureAtlas 图像
我正在从扩展 libgdx 类游戏的主游戏类加载 Assets 。在该类的 create() 方法中,我调用了 Assets.loadAtlas(); 并调用了: public static void
这不可行吗? TextureAtlas atlas = new TextureAtlas(Gdx.files.internal("data/texture.png")); AtlasR
我正在尝试从 TextureAtlas 获取纹理区域,但作为纹理。 我试过: textureAtlas.findRegion("explosion").getTexture(); 但它返回整个纹理图集
我正在使用 libgdx 制作一个简单的游戏。我有一个 TextureAtlas,它有我正在尝试使用的 ninepatch: 图片保存为menu.9.png 我正在使用以下代码: Image bg =
我正在尝试制作一个带有简单动画的节点,因此我创建了一个动画,其中每个单独的帧都作为 .png 文件,我将它们全部放在一个文件夹中,并将其命名为 stoneanimation2.atlas 。 这是我试
我最初实现了直接从资源文件夹加载TextureAtlas,但是游戏变得非常滞后,因为我必须调用TextureAtlas的每个区域来获取动画中要使用的帧(libgdx表示使用TextureAtlas的f
从 Eclipse 运行我的应用程序时没有问题,但在桌面上导出和运行时,我的 TextureAtlas 中的所有图像都会出现故障,显示为黑色/灰色框,以及一些奇怪的东西,如 白色渐变框 和灯光覆盖。
在使用 libGDX 时,我注意到有时我绘制到屏幕上的纹理不会绘制到精确的像素,而是使用不同侧面的其他纹理的边缘的微小部分绘制(例如,这里是头发顶部的单行像素被渲染到玩家脚的下方)。 当我将游戏缩放到
我注意到我可以为一个 textureRegion 保留一个图集,尽管我可以多次绘制相同的区域作为 Sprite 。是否可以将所有 textureRegions 保留在一个场景中的一个 textureA
我正在尝试使用 LibGDX 创建一个简单的游戏。我正在尝试使用 9 Patch 图像作为菜单按钮的背景,但似乎忽略了图像的 9 Patch 质量。 我有两张图片,“active.9.png”和“re
stackoverflowers 和其他好人,经过两天的尝试,我有一个问题不知道如何解决:我有 libgdx 项目(我正在使用舞台和 Actor ,但现在这并不重要),我在评论中添加了所有无用的东西,
我正在尝试从单个纹理转变为对我的盒子使用纹理图集(它们都显示单个字母,用于类似拼字游戏的游戏)。我对此深信不疑,我找到的所有示例都是针对 2D Sprite 的。 如何使用来自 AtlasRegion
我有 2 个 AssetManager 实例:一个用于基本纹理,一个用于高质量纹理。基本纹理位于“android/assets”文件夹中,高质量纹理打包在 zip 文件中。此文件夹中的内容(文件名)是
我正在制作一款格斗游戏,所以我有巨大的角色 Sprite (300 像素 X 350 像素)和大量动画帧(每个角色约 150 帧),因此最大 2048 x 2048 纹理尺寸无法适应所有帧一个角色的动
我开始将我的 LIBGDX 应用程序移植到 IOS。我使用 libgdx 的 Xamarin studio 端口在 IOS 上运行我的应用程序。我移植成功,但应用程序无法在 Iphone 模拟器中加载
我们使用iOS 7 中新的SpriteKit 框架来开发小游戏。为了构建和分发我们游戏的新版本,我们使用构建和部署服务器,该服务器使用 Xcode5 的命令行工具。 当我们使用 Texture Atl
我是一名优秀的程序员,十分优秀!