2014-12-06 9 views
0

내 프로젝트에 AssetManager를 구현하려고했습니다. 이제 AssetManager에서 내가 뭘 잘못하고 있는지 알 수 없습니다. 나는 봤고, 다른 일을 시도. 그러나 아무도 AssetManager에 이런 종류의 문제를 경험 한 적이없는 것 같습니다. .finisLoading()을 사용했으나 나중에 .isLoaded에게로드되지 않았다는 메시지가 표시되면로드되지 않았습니다.libgdx AssetManager.finishLoading() not working

위키 튜토리얼 here

manager.load ("데이터/mytexture.png", Texture.class)를 말한다;

....

manager.finishLoading();

...

질감 TEX = 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)); 
} 

구유는 지금까지

실행 GDX-setup.jar에 의해 생성 된 프로젝트를 시도했다 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; }

입니다 -> 나오지 않았어 파일로드 : 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 : 질감이로드되지 않았습니다!

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

난 그냥 읽고 (다시) 내가 your_project_path/core/assets/에 작업 디렉토리를 설정했다 here. 어떻게 든 설치 후 그 단계를 잊어 버렸습니다.

하지만 자산 폴더는 평평해야합니다 (데스크톱의 경우 no sub directories).

0

나는 당신이 (때문에 단지 주석 제공된 코드에) 절대 (전체) 파일 경로를 사용한다고 가정하지만, AssetManager는 내부가 (당신이 FileHandleResolver를 지정하지 않는, 기본 생성자를 사용하여 만드는) 기대하고있다.

String fileName = "texture.jpg"; 

을 사용하여 코드를 시도하고 texture/.jpg 파일을/project/android/assets /에 두었습니다. 정상적으로 작동합니다. 해당 폴더에 내부 자산을 넣고 파일 경로를 내부로 변경하면 제대로 작동합니다.

편집 :

정말 모든 백엔드가 동의 한 경우에만 데스크톱에 배포 할 경우에도, 그것은 당신의 자산을 가지고 이외의 의미가 있기 때문에 절대 경로를 사용하는 것은 좋은 생각이 아니라고 생각 항아리 밖에있는 위치가 있습니다. 어쨌든,이 코드는 절대 경로를 위해, 나를 위해 작동 :

 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

+0

귀하의 도움을 주셔서 감사하지만 AssetManager가 도청 된 것 같아요. 설치 프로그램에서 생성 된 코드조차도 실행되지 않습니다. – GavriYashar