2016-07-15 4 views
0

このコードはデスクトップでうまく動作しますが、アンドロイド携帯で実行するとエラーが発生します。 コード:LibGDXはデスクトップにはスキンをロードできますが、アンドロイドにはロードできません。

public class MainClass extends ApplicationAdapter { 

private Stage stage; 
private Skin skin; 

@Override 
public void create() { 
    skin=new Skin(Gdx.files.internal("uiskin.json")); 
    stage=new Stage(new ScreenViewport()); 

    final Label label=new Label("This is a label",skin,"default"); 
    label.setPosition(250,0); 
    label.setWidth(300); 
    label.setHeight(50); 

    stage.addActor(label); 
    Gdx.input.setInputProcessor(stage); 
} 

@Override 
public void render() { 
    Gdx.gl.glClearColor(0.5f, 0.5f, 0.5f, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    stage.act(Gdx.graphics.getDeltaTime()); 
    stage.draw(); 
} 

@Override 
public void dispose() { 
    super.dispose(); 
    stage.dispose(); 
    skin.dispose(); 
} 

}

エラー:

07-15 03:53:11.298 30926-30956/com.test.skintest E/AndroidRuntime: FATAL EXCEPTION: GLThread 14997 
                   Process: com.test.skintest, PID: 30926 
                   com.badlogic.gdx.utils.SerializationException: Error reading file: uiskin.json 
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:97) 
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:74) 
                    at com.test.skintest.MainClass.create(MainClass.java:22) 
                    at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:290) 
                    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1511) 
                    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239) 
                   Caused by: com.badlogic.gdx.utils.SerializationException: Error reading file: uiskin.json 
                    at com.badlogic.gdx.utils.Json.fromJson(Json.java:694) 
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95) 
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:74)  
                    at com.test.skintest.MainClass.create(MainClass.java:22)  
                    at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:290)  
                    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1511)  
                    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)  
                   Caused by: com.badlogic.gdx.utils.SerializationException: Error parsing file: uiskin.json 
                    at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:77) 
                    at com.badlogic.gdx.utils.Json.fromJson(Json.java:692) 
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)  
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:74)  
                    at com.test.skintest.MainClass.create(MainClass.java:22)  
                    at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:290)  
                    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1511)  
                    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)  
                   Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: uiskin.json (Internal) 
                    at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:77) 
                    at com.badlogic.gdx.files.FileHandle.reader(FileHandle.java:163) 
                    at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:75) 
                    at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)  
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)  
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:74)  
                    at com.test.skintest.MainClass.create(MainClass.java:22)  
                    at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:290)  
                    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1511)  
                    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)  
                   Caused by: java.io.FileNotFoundException: uiskin.json 
                    at android.content.res.AssetManager.openAsset(Native Method) 
                    at android.content.res.AssetManager.open(AssetManager.java:334) 
                    at android.content.res.AssetManager.open(AssetManager.java:308) 
                    at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:75) 
                    at com.badlogic.gdx.files.FileHandle.reader(FileHandle.java:163)  
                    at com.badlogic.gdx.utils.JsonReader.parse(JsonReader.java:75)  
                    at com.badlogic.gdx.utils.Json.fromJson(Json.java:692)  
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.load(Skin.java:95)  
                    at com.badlogic.gdx.scenes.scene2d.ui.Skin.<init>(Skin.java:74)  
                    at com.test.skintest.MainClass.create(MainClass.java:22)  
                    at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:290)  
                    at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1511)  
                    at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239)  

私は電話がuiskin.json見つけることができないため、エラーが生成されていることを知っているが、私は理由を理解しません。

答えて

1

Gdx.files.internalassetsディレクトリを指しているので、ファイルはassets/uiskin.jsonである必要があります。これは、パスがルートディレクトリまたは作業ディレクトリからの相対的なデスクトップとは異なります。資産にhttps://github.com/libgdx/libgdx/blob/master/tests/gdx-tests-android/assets/data/uiskin.jsonが、私はまだ取得:

https://github.com/libgdx/libgdx/wiki/File-handling

+0

私はこのファイルを移動します同じエラー –

+0

古いディレクトリ構造を使用していますか、またはgradleを使用していますか? これは: 古いタイプのもので、新しい構造 '//src/main/assets/uiskin.json'の場合は/assets/uiskin.json'です。 –

+0

私は古いディレクトリ構造を使用しています –

関連する問題