2014-11-24 68 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