2016-03-23 71 views
0

我遇到了一些問題。我對libGDX有點新,對於最新的錯誤一無所知。
在這裏我有一個狀態,有三個文本按鈕的實例。它在我的桌面上工作正常,但在手機上崩潰。我不確定問題是什麼,但是當我註釋掉兩個實例的代碼時,它可以在我的手機上使用。
LibGDX遊戲在桌面上按預期工作,但不在Android設備上運行

public class MenuStateTest extends State { 

Stage stage; 
TextButton button, button2, button3; 
TextButton.TextButtonStyle textButtonStyle; 
BitmapFont font; 
Skin skin; 
TextureAtlas buttonAtlas, button2Atlas, button3Atlas; 

public MenuStateTest(GameStateManager gsm) { 
    super(gsm); 
    stage = new Stage(); 
    Gdx.input.setInputProcessor(stage); 
    font = new BitmapFont(); 
    skin = new Skin(); 

    buttonAtlas = new TextureAtlas("buttonTest.pack"); 
    skin.addRegions(buttonAtlas); 
    textButtonStyle = new TextButton.TextButtonStyle(); 
    textButtonStyle.font = font; 
    textButtonStyle.up = skin.getDrawable("1BBlock"); 
    textButtonStyle.down = skin.getDrawable("T1BBlock"); 
    button = new TextButton("", textButtonStyle); 
    stage.addActor(button); 
    button.setPosition(20,200); 

    button2Atlas = new TextureAtlas("button2Test.pack"); 
    skin.addRegions(button2Atlas); 
    textButtonStyle = new TextButton.TextButtonStyle(); 
    textButtonStyle.font = font; 
    textButtonStyle.up = skin.getDrawable("2BBlock"); 
    textButtonStyle.down = skin.getDrawable("T2BBlock"); 
    button2 = new TextButton("", textButtonStyle); 
    stage.addActor(button2); 
    button2.setPosition(175,200); 

    button3Atlas = new TextureAtlas("button3Test.pack"); 
    skin.addRegions(button3Atlas); 
    textButtonStyle = new TextButton.TextButtonStyle(); 
    textButtonStyle.font = font; 
    textButtonStyle.up = skin.getDrawable("3BBlock"); 
    textButtonStyle.down = skin.getDrawable("T3BBlock"); 
    button3 = new TextButton("", textButtonStyle); 
    stage.addActor(button3); 
    button3.setPosition(330,200); 
} 

@Override 
protected void render(SpriteBatch sb) { 
    stage.draw(); 

任何幫助,將不勝感激。
謝謝。

編輯:這就是我能夠從

03-23 11:44:54.510 25775-25799/? E/AndroidRuntime: FATAL EXCEPTION: GLThread 2379 
               Process: com.mygame.game.android, PID: 25775 
               Theme: themes:{default=overlay:com.blazze11.euphoria.dark, iconPack:system, fontPkg:system, com.android.systemui=overlay:com.blazze11.euphoria.dark, com.android.systemui.navbar=overlay:system} 
               com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: button2Test.pack (Internal) 
                at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:77) 
                at com.badlogic.gdx.graphics.g2d.TextureAtlas$TextureAtlasData.<init>(TextureAtlas.java:103) 
                at com.badlogic.gdx.graphics.g2d.TextureAtlas.<init>(TextureAtlas.java:231) 
                at com.badlogic.gdx.graphics.g2d.TextureAtlas.<init>(TextureAtlas.java:226) 
                at com.badlogic.gdx.graphics.g2d.TextureAtlas.<init>(TextureAtlas.java:216) 
                at com.badlogic.gdx.graphics.g2d.TextureAtlas.<init>(TextureAtlas.java:211) 
                at com.mygame.game.States.MenuStateTest.<init>(MenuStateTest.java:41) 
                at com.mygame.game.MyGame.create(MyGame.java:29) 
                at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:243) 
                at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1519) 
                at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240) 
               Caused by: java.io.FileNotFoundException: button2Test.pack 
                at android.content.res.AssetManager.openAsset(Native Method) 
                at android.content.res.AssetManager.open(AssetManager.java:331) 
                at android.content.res.AssetManager.open(AssetManager.java:305) 
                at com.badlogic.gdx.backends.android.AndroidFileHandle.read(AndroidFileHandle.java:75) 
                at com.badlogic.gdx.graphics.g2d.TextureAtlas$TextureAtlasData.<init>(TextureAtlas.java:103)  
                at com.badlogic.gdx.graphics.g2d.TextureAtlas.<init>(TextureAtlas.java:231)  
                at com.badlogic.gdx.graphics.g2d.TextureAtlas.<init>(TextureAtlas.java:226)  
                at com.badlogic.gdx.graphics.g2d.TextureAtlas.<init>(TextureAtlas.java:216)  
                at com.badlogic.gdx.graphics.g2d.TextureAtlas.<init>(TextureAtlas.java:211)  
                at com.mygame.game.States.MenuStateTest.<init>(MenuStateTest.java:41)  
                at com.mygame.game.MyGame.create(MyGame.java:29)  
                at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:243)  
                at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1519)  
                at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)  
+0

請提供錯誤堆棧跟蹤 –

+0

當我用try和catch塊圍繞最後兩個按鈕實例時,代碼會在我的手機上運行。但只有第一個按鈕被渲染到屏幕上。 – user2965071

回答

1

如果它運行在桌面上,不會在Android上運行logcat的獲得,有一些我能想到的兩種可能性:

  1. 檢查包含button2Test.pack 文件的文件夾的路徑。 Android路徑相對於資產文件夾,而 桌面使用相對於根文件夾的路徑。
  2. 檢查文件名稱的案例button2Test.pack例如 是否應該是Button2Test.pack,button2test.PACK或 類似的comobinations。由於Windows接受任何案件文件,但是Android不支持。
+1

當然,是文件名。必須檢查文件系統的正確名稱。 –

相關問題