2014-11-24 58 views
1

如果我啓動它的桌面它運行相當不錯,但在我的Android導出後,它崩潰了我啓動應用程序後。libGDX動畫爲Android

所以我的問題...:

什麼是錯,它適用於桌面,但不是我的Android?

public class Player implements Serializable{ 

/** 
* 
*/ 
private static final long serialVersionUID = -7913517465400462738L; 

Vector2 position; 
private static final int col = 4; 
private static final int row = 4; 
private Animation animation; 
private Texture playerTexture; 
private TextureRegion[] frames; 
private TextureRegion currentFrame; 
private float stateTime; 
private int x,y, deltaX, deltaY; 



public Player(Vector2 position){ 
    this.position = position; 
    playerTexture = new Texture(Gdx.files.internal("Charackter/charackter_sprite.png")); 
    TextureRegion[][] temp = TextureRegion.split(playerTexture, playerTexture.getWidth()/col, playerTexture.getHeight()/row); 
    frames = new TextureRegion[col* row]; 

    int index = 0; 
    for(int i = 0; i < row; i++){ 
     for(int j = 0; j < col; j++){ 
      frames[index++] = temp[i][j]; 
     } 
    } 
    animation = new Animation(1, frames); 
    stateTime = 0; 
    currentFrame = animation.getKeyFrame(0); 
    deltaX = Gdx.graphics.getWidth(); 
    deltaY = Gdx.graphics.getHeight(); 
} 

public void update(){ 

    if(stateTime < 4){ 
    stateTime += Gdx.graphics.getDeltaTime(); 
    } 
    else{ 
     stateTime = 0; 
    }  

    if (Gdx.input.isTouched()) 
    { 
     x = Gdx.input.getX(); 
     y = Gdx.input.getY(); 
     if(x < deltaX * 50/100 && y > deltaY * 35/100 && y < deltaY * 65/100){ 
      position.x -= 1; 
      currentFrame = animation.getKeyFrame(4 + stateTime); 
     } 
     if(x > deltaX * 50/100 && y > deltaY * 35/100 && y < deltaY * 65/100){ 
      position.x += 1; 
      currentFrame = animation.getKeyFrame(8 + stateTime); 
     } 
     if(y < deltaY * 35/100){ 
      position.y += 1; 
      currentFrame = animation.getKeyFrame(12 + stateTime); 
     } 
     if(y > deltaY * 65/100){ 
      position.y -= 1; 
      currentFrame = animation.getKeyFrame(0 + stateTime); 
     } 
    } 
} 


public Vector2 getPosition() { 
    return position; 
} 
public void setPosition(Vector2 position) { 
    this.position = position; 
} 
public TextureRegion getCurrentFrame() { 
    return currentFrame; 
} 
} 

public class PlayScreen implements Screen { 

private SpriteBatch batch; 
private Vector2 position; 
private Game game; 
private Player player; 
private Texture bild; 

public PlayScreen(Game game){ 
    this.game = game; 
} 

@Override 
public void render(float delta) {  
    Gdx.gl.glClearColor(1, 1, 1, 1); 
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 
    player.update(); 
    batch.begin(); 
    batch.draw(player.getCurrentFrame(), player.getPosition().x, player.getPosition().y); 
    batch.end(); 
} 

@Override 
public void resize(int width, int height) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void show() { 
    batch = new SpriteBatch(); 
    position = new Vector2(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2); 
    player = new Player(position); 
    bild = new Texture("spongebob.png"); 
} 

@Override 
public void hide() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void pause() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void resume() { 
    // TODO Auto-generated method stub 

} 

@Override 
public void dispose() { 
    batch.dispose(); 

} 

} 

logcat的

11-25 11:25:20.990: D/dalvikvm(862): Trying to load lib /data/app-lib/com.mygdx.game.android-2/libgdx.so 0xb1caad50 
11-25 11:25:21.040: D/dalvikvm(862): Added shared lib /data/app-lib/com.mygdx.game.android-2/libgdx.so 0xb1caad50 
11-25 11:25:21.040: D/dalvikvm(862): No JNI_OnLoad found in /data/app-lib/com.mygdx.game.android-2/libgdx.so 0xb1caad50, skipping init 
11-25 11:25:21.100: D/AndroidRuntime(862): Shutting down VM 
11-25 11:25:21.100: W/dalvikvm(862): threadid=1: thread exiting with uncaught exception (group=0xb1a73d70) 
11-25 11:25:21.110: E/AndroidRuntime(862): FATAL EXCEPTION: main 
11-25 11:25:21.110: E/AndroidRuntime(862): Process: com.mygdx.game.android, PID: 862 
11-25 11:25:21.110: E/AndroidRuntime(862): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mygdx.game.android/com.mygdx.game.android.AndroidLauncher}: com.badlogic.gdx.utils.GdxRuntimeException: Libgdx requires OpenGL ES 2.0 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2197) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2258) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.access$800(ActivityThread.java:138) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1209) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.os.Handler.dispatchMessage(Handler.java:102) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.os.Looper.loop(Looper.java:136) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.main(ActivityThread.java:5026) 
11-25 11:25:21.110: E/AndroidRuntime(862): at java.lang.reflect.Method.invokeNative(Native Method) 
11-25 11:25:21.110: E/AndroidRuntime(862): at java.lang.reflect.Method.invoke(Method.java:515) 
11-25 11:25:21.110: E/AndroidRuntime(862): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
11-25 11:25:21.110: E/AndroidRuntime(862): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602) 
11-25 11:25:21.110: E/AndroidRuntime(862): at dalvik.system.NativeStart.main(Native Method) 
11-25 11:25:21.110: E/AndroidRuntime(862): Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Libgdx requires OpenGL ES 2.0 
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidGraphics.createGLSurfaceView(AndroidGraphics.java:122) 
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(AndroidGraphics.java:102) 
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(AndroidGraphics.java:95) 
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidApplication.init(AndroidApplication.java:133) 
11-25 11:25:21.110: E/AndroidRuntime(862): at com.badlogic.gdx.backends.android.AndroidApplication.initialize(AndroidApplication.java:99) 
11-25 11:25:21.110: E/AndroidRuntime(862): at com.mygdx.game.android.AndroidLauncher.onCreate(AndroidLauncher.java:14) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.Activity.performCreate(Activity.java:5242) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
11-25 11:25:21.110: E/AndroidRuntime(862): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2161) 
11-25 11:25:21.110: E/AndroidRuntime(862): ... 11 more 

我在Java中 相當新的,所以我希望這是正確的部分:X

+4

在你的問題中顯示崩潰的logcat輸出。 – 2014-11-24 23:28:22

回答

2

已經有一些人有例外,其中logcat的說:

GdxRuntimeException: Libgdx requires OpenGL ES 2.0 

這是由於您的模擬器不使用你的顯卡的GPU和最好的解決辦法是使用手機測試您的應用程序,但如果出於任何原因,您不能像@AngelAngel那樣應用此解決方案:libgdx android failed on launch
出於某種原因(可能是OpenGL的沒有毛刺)的解決方案,以下面的錯誤也可能會幫助你

com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: xxx.xxx 

如果你只,而在Android的實驗,同時它適用於Windows,它可能是因爲一個這個錯誤您的資產與您在代碼上使用的名稱不完全一致。 Unix是大小寫敏感的,所以image.jpg與Image.jpg不同。因此,檢查每個資產,你必須看到名稱是否匹配!

+2

你是一個安全的生活:D charackter_sprite.png必須是charackter_sprite.PNG 現在它的工作原理,非常感謝:) – Fabi 2014-11-25 11:58:41

+0

@Opetion你的答案是正確的,我的提示是。 logcat對應的錯誤,或者有兩個錯誤,看起來很奇怪,輸出日誌,找不到文件,你不覺得嗎? – 2014-11-25 12:27:59

+0

@AngelAngel我相信Fabi有2個錯誤。第一個與我們在logcat中看到的相關(稍後提供)。所以你的回答是正確的,我認爲你的問題是正確的。還有第二個錯誤,當我沒有logcat的時候,我會「瘋狂地猜到它」。瘋狂的猜測,因爲它不是我第一次發生在我身上,因爲我一直在Windows中開發,當我想在Android中進行測試時發生過很多事情:)這個錯誤不在logcat中,因爲第一個錯誤。 – Opetion 2014-11-25 13:46:59

2

您使用模擬器?

libgdx android failed on launch

編輯:

選項裏面

我告訴你,因爲我發現了一個類似的問題,我放下了logcat的這個問題,並將其發送響應,並且用戶通過更改文件來解決。 TTF通過。 ttf,並花了一些時間尋找錯誤,爲什麼說我發現混淆日誌,但我沒有窗口,但我看到兩者之間最顯着的差異是,這一行日誌 11-28 21:10:37.617: D/libEGL(613): Emulator without GPU support detected. Fallback to software renderer.這個問題的日誌是不在名單中。也許當錯誤是模擬或缺乏OpenGL更像是logcat或第一次,並且當大寫和小寫日誌之間的差異找不到文件時,您更像是第二個,它表示在沒有GPU支持的情況下檢測到模擬器。我希望我完全明白我的英文不好

logcat這個問題; FATAL EXCEPTION : main - My app doesn't work on android devices anymore, but works on desktop

11-28 21:10:37.517: D/dalvikvm(613): Trying to load lib /data/data/com.premier.jeu.android/lib/libgdx.so 0x411998b0 
11-28 21:10:37.527: D/dalvikvm(613): Added shared lib /data/data/com.premier.jeu.android/lib/libgdx.so 0x411998b0 
11-28 21:10:37.527: D/dalvikvm(613): No JNI_OnLoad found in /data/data/com.premier.jeu.android/lib/libgdx.so 0x411998b0, skipping init 
11-28 21:10:37.617: D/libEGL(613): Emulator without GPU support detected. Fallback to software renderer. 
11-28 21:10:37.627: D/libEGL(613): loaded /system/lib/egl/libGLES_android.so 
11-28 21:10:37.646: D/AndroidRuntime(613): Shutting down VM 
11-28 21:10:37.646: W/dalvikvm(613): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 
11-28 21:10:37.656: E/AndroidRuntime(613): FATAL EXCEPTION: main 
11-28 21:10:37.656: E/AndroidRuntime(613): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.premier.jeu.android/com.premier.jeu.android.AndroidLauncher}: com.badlogic.gdx.utils.GdxRuntimeException: Libgdx requires OpenGL ES 2.0 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.access$600(ActivityThread.java:130) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.os.Handler.dispatchMessage(Handler.java:99) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.os.Looper.loop(Looper.java:137) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.main(ActivityThread.java:4745) 
11-28 21:10:37.656: E/AndroidRuntime(613): at java.lang.reflect.Method.invokeNative(Native Method) 
11-28 21:10:37.656: E/AndroidRuntime(613): at java.lang.reflect.Method.invoke(Method.java:511) 
11-28 21:10:37.656: E/AndroidRuntime(613): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
11-28 21:10:37.656: E/AndroidRuntime(613): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
11-28 21:10:37.656: E/AndroidRuntime(613): at dalvik.system.NativeStart.main(Native Method) 
11-28 21:10:37.656: E/AndroidRuntime(613): Caused by: com.badlogic.gdx.utils.GdxRuntimeException: Libgdx requires OpenGL ES 2.0 
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidGraphics.createGLSurfaceView(AndroidGraphics.java:122) 
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(AndroidGraphics.java:102) 
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidGraphics.<init>(AndroidGraphics.java:95) 
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidApplication.init(AndroidApplication.java:133) 
11-28 21:10:37.656: E/AndroidRuntime(613): at com.badlogic.gdx.backends.android.AndroidApplication.initialize(AndroidApplication.java:99) 
11-28 21:10:37.656: E/AndroidRuntime(613): at com.premier.jeu.android.AndroidLauncher.onCreate(AndroidLauncher.java:16) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.Activity.performCreate(Activity.java:5008) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079) 
11-28 21:10:37.656: E/AndroidRuntime(613): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023) 
11-28 21:10:37.656: E/AndroidRuntime(613): ... 11 more 
11-28 21:10:39.476: I/Process(613): Sending signal. PID: 613 SIG: 9 
+0

好吧,我剛剛忘了刪除這部分... 我會盡力嘗試,但我認爲主要問題是在播放器中。類 沒有這個部分一切工作正常 但我需要這個動畫︰/ – Fabi 2014-11-25 08:47:36

+0

@Fabi我不應該回答,但我做到了,如果這是錯誤沒有把logcat,現在四個人在logcat問你要盡力幫忙,而且還是沒有任何的負面反饋,如果你對請求沒有做,不要驚訝我關閉 – 2014-11-25 11:13:50

+0

哦,對不起,我的錯>。< 我在這裏是新的,所以它有點混淆,我會編輯它 – Fabi 2014-11-25 11:18:54