2014-12-06 70 views
0

我试着将AssetManager实现到我的项目中。现在我无法弄清楚我在AssetManager中做了什么错误。我GOOGLE了,并尝试了不同的东西。但似乎没有人会用AssetManager遇到过这种问题。我使用.finisLoading(),但事后如果我问.isLoaded说,它尚未加载。libgdx AssetManager.finishLoading()不起作用

维基教程here 说这

manager.load( “数据/ mytexture.png”,Texture.class);

....

manager.finishLoading();

...

纹理特= manager.get( “数据/ mytexture.png”,Texture.class);

我有这样的代码

// fullFile e.g. "D:\\folder\\subfolder\\subsubfolder\\jpg.jpg" 

if (!new FileHandle(fullFile).exists()) { 
    System.err.printf("invalid file \"%s\"\n",fullFile); 
    System.exit(1); 
} 

if (!manager.isLoaded(fullFile,Texture.class)) manager.load(fullFile,Texture.class); 
manager.finishLoading(); 

if (!manager.isLoaded(fullFile,Texture.class)) { 
    return = new Sprite(new Texture("D:\\folder\\subfolder\\subsubfolder\\placeholder.jpg")); 
} else { 
    return new Sprite(manager.get(fullFile,Texture.class)); 
} 

马槽是 AssetManager manager = new AssetManager(new FileHandleResolver() { @Override public FileHandle resolve(String fullFile) { FileHandle fh = new FileHandle(fullFile); if (!fh.exists()) { System.err.printf("invalid file \"%s\"\n",fh.path()); System.exit(1); } return fh; }

我到目前为止已经试过

运行通过GDX-setup.jar创建的项目 - > Couldn 't加载文件:badlogic.jpg

代码自:Juan Javier Cassani

public static void test() { 
AbsoluteFileHandleResolver fileHandleResolver = new AbsoluteFileHandleResolver(); 
AssetManager manager = new AssetManager(fileHandleResolver); 
//This could be anywhere else 
String fileName = "D:\\blablabla\\my_project\\core\\assets\\badlogic.jpg"; 

if (!new FileHandle(fileName).exists()) { 
    Gdx.app.error("Blub", "invalid file '" + fileName + "'"); 
    Gdx.app.exit(); 
} 

if (!manager.isLoaded(fileName, Texture.class)) 
    manager.load(fileName, Texture.class); 

manager.finishLoading(); 

if (manager.isLoaded(fileName, Texture.class)) 
    Gdx.app.log("Blub", "Texture loaded!"); 
else 
    Gdx.app.log("Blub", "Texture not loaded!"); 
} 

- > Blub:Texture not loaded!

Versions: 
java version "1.8.0_25" 
Java(TM) SE Runtime Environment (build 1.8.0_25-b18) 
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode) 

ashley-1.3.1.jar 
box2dlights-1.3.jar 
gdx-1.4.1.jar 
gdx-ai-1.4.0.jar 
gdx-backend-lwjgl-1.4.1.jar 
gdx-box2d-1.4.1.jar 
gdx-box2d-platform-1.4.1-natives-desktop.jar 
gdx-bullet-1.4.1.jar 
gdx-bullet-platform-1.4.1-natives-desktop.jar 
gdx-controllers-1.4.1.jar 
gdx-controllers-desktop-1.4.1.jar 
gdx-controllers-platform-1.4.1-natives-desktop.jar 
gdx-freetype-1.4.1.jar 
gdx-freetype-platform-1.4.1-natives-desktop.jar 
gdx-platform-1.4.1-natives-desktop.jar 
gdx-tools-1.4.1.jar 
jinput-2.0.5.jar 
jinput-platform-2.0.5-natives-linux.jar 
jinput-platform-2.0.5-natives-osx.jar 
jinput-platform-2.0.5-natives-windows.jar 
jlayer-1.0.1-gdx.jar 
jorbis-0.0.17.jar 
jutils-1.0.0.jar 
lwjgl-2.9.1.jar 
lwjgl-platform-2.9.1-natives-linux.jar 
lwjgl-platform-2.9.1-natives-osx.jar 
lwjgl-platform-2.9.1-natives-windows.jar 
lwjgl_util-2.9.1.jar 

回答

0

我刚才读(再次)here,我不得不将工作目录设置为your_project_path/core/assets/。我不知何故在安装后忘记了这一步。

但资产文件夹需要放平,no sub directories(在桌面上)。

0

我假设你使用绝对(完全)文件路径(因为在所提供的代码它只是注释),但AssetManager预计内部(使用的是默认的构造函数创建它,而不是指定一个FileHandleResolver)。我想你的代码中使用

String fileName = "texture.jpg"; 

,并把一个texture.jpg文件/项目/安卓/资产/并能正常工作。只需将您的内部资产放在该文件夹中,将文件路径更改为内部文件即可。

编辑:

我真的觉得使用绝对路径是不是一个好主意,因为并不是所有的后端接受它,即使你只部署到桌面上,它使非感让你的资产你的jar外面的位置是。无论如何,此代码的工作对我来说,绝对路径:

 AbsoluteFileHandleResolver fileHandleResolver = new AbsoluteFileHandleResolver(); 
     AssetManager manager = new AssetManager(fileHandleResolver); 
     //This could be anywhere else 
     String fileName = "/home/javier/texture.jpg"; 

     if (!new FileHandle(fileName).exists()) { 
      Gdx.app.error(TAG, "invalid file '" + fileName + "'"); 
      Gdx.app.exit(); 
     } 

     if (!manager.isLoaded(fileName, Texture.class)) 
      manager.load(fileName, Texture.class); 

     manager.finishLoading(); 

     if (manager.isLoaded(fileName, Texture.class)) 
      Gdx.app.log(TAG, "Texture loaded!"); 
     else 
      Gdx.app.log(TAG, "Texture not loaded!"); 
+0

我更改了我的Assetmanager,因此我接受完全限定的名称。但同样的问题仍然存在。它说它已经完成加载,并且不是。相对路径从来没有工作。 – GavriYashar 2014-12-06 08:43:06

+0

我很感谢您的帮助,但我猜AssetManager是被窃听的,甚至没有安装程序生成的代码运行。 – GavriYashar 2014-12-06 23:02:18