2015-06-14 159 views
0

我正在尝试使用LibGdx和Tween引擎为动画开发我的第一款Android游戏。然而,始终如果我尝试我的手机上运行它,我得到以下错误:Android Studio/LibGdx /致命错误

06-14 17:00:43.894 31239-31270/com.joelbrun.jetskirider.android E/AndroidRuntime﹕ FATAL EXCEPTION: GLThread 4726 
Process: com.joelbrun.jetskirider.android, PID: 31239 
java.lang.NoClassDefFoundError: Failed resolution of: Laurelienribon/tweenengine/TweenManager; 
     at com.joelbrun.jetskirider.screens.Splash.show(Splash.java:26) 
     at com.badlogic.gdx.Game.setScreen(Game.java:61) 
     at com.joelbrun.jetskirider.JetskiRider.create(JetskiRider.java:10) 
     at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241) 
     at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1511) 
     at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239) 
Caused by: java.lang.ClassNotFoundException: Didn't find class "aurelienribon.tweenengine.TweenManager" on path: DexPathList[[zip file "/data/app/com.joelbrun.jetskirider.android-2/base.apk"],nativeLibraryDirectories=[/data/app/com.joelbrun.jetskirider.android-2/lib/arm, /vendor/lib, /system/lib]] 
     at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:511) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:469) 
            at com.joelbrun.jetskirider.screens.Splash.show(Splash.java:26) 
            at com.badlogic.gdx.Game.setScreen(Game.java:61) 
            at com.joelbrun.jetskirider.JetskiRider.create(JetskiRider.java:10) 
            at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:241) 
            at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1511) 
            at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1239) 
Suppressed: java.lang.ClassNotFoundException: aurelienribon.tweenengine.TweenManager 
     at java.lang.Class.classForName(Native Method) 
     at java.lang.BootClassLoader.findClass(ClassLoader.java:781) 
     at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:504) 
     ... 7 more 
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available 

类: 主类(JetskiRider)

package com.joelbrun.jetskirider; 

import com.badlogic.gdx.Game; 
import com.joelbrun.jetskirider.screens.Splash; 

public class JetskiRider extends Game { 

    @Override 
    public void create() { 
     setScreen(new Splash()); 
    } 

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

    @Override 
    public void resume() { 
     super.resume(); 
    } 

    @Override 
    public void resize(int width, int height) { 
     super.resize(width, height); 
    } 

    @Override 
    public void pause() { 
     super.pause(); 
    } 

    @Override 
    public void render() { 
     super.render(); 
    } 
} 

飞溅(闪屏)

package com.joelbrun.jetskirider.screens; 

import com.badlogic.gdx.Game; 
import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.Screen; 
import com.badlogic.gdx.graphics.GL20; 
import com.badlogic.gdx.graphics.Texture; 
import com.badlogic.gdx.graphics.g2d.Sprite; 
import com.badlogic.gdx.graphics.g2d.SpriteBatch; 
import com.joelbrun.jetskirider.tween.SpriteAccessor; 

import aurelienribon.tweenengine.BaseTween; 
import aurelienribon.tweenengine.Tween; 
import aurelienribon.tweenengine.TweenCallback; 
import aurelienribon.tweenengine.TweenManager; 

public class Splash implements Screen { 

    private SpriteBatch batch; 
    private Sprite splash; 
    private TweenManager tweenManager; 

    @Override 
    public void show() { 
     batch = new SpriteBatch(); 
     tweenManager = new TweenManager(); 
     Tween.registerAccessor(Sprite.class, new SpriteAccessor()); 

     Texture splashTexture = new Texture("splash.png"); 
     splash = new Sprite(splashTexture); 
     splash.setSize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

     Tween.set(splash, SpriteAccessor.ALPHA).target(0).start(tweenManager); 
     Tween.to(splash, SpriteAccessor.ALPHA, 2).target(1).repeatYoyo(1, 2).setCallback(new TweenCallback() { 
      @Override 
      public void onEvent(int type, BaseTween<?> source) { 
       ((Game)Gdx.app.getApplicationListener()).setScreen(new MainMenu()); 
      } 
     }).start(tweenManager); 
    } 

    @Override 
    public void render(float delta) { 
     Gdx.gl.glClearColor(0,0,0,1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     tweenManager.update(delta); 

     batch.begin(); 
     splash.draw(batch); 
     batch.end(); 
    } 

    @Override 
    public void resize(int width, int height) { 
     resize(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 
    } 

    @Override 
    public void pause() { 

    } 

    @Override 
    public void resume() { 

    } 

    @Override 
    public void hide() { 

    } 

    @Override 
    public void dispose() { 
     batch.dispose(); 
     splash.getTexture().dispose(); 
    } 
} 

MainMenu(启动画面后的主菜单;尚未完成)

package com.joelbrun.jetskirider.screens; 

import com.badlogic.gdx.Screen; 
import com.badlogic.gdx.scenes.scene2d.ui.Label; 
import com.badlogic.gdx.scenes.scene2d.ui.Table; 

import javafx.stage.Stage; 

public class MainMenu implements Screen { 

    private Stage stage; 
    private Table table; 
    private Label highscore; 

    @Override 
    public void show() { 

    } 

    @Override 
    public void render(float delta) { 

    } 

    @Override 
    public void resize(int width, int height) { 

    } 

    @Override 
    public void pause() { 

    } 

    @Override 
    public void resume() { 

    } 

    @Override 
    public void hide() { 

    } 

    @Override 
    public void dispose() { 

    } 
} 

雪碧访问器(用于访问器吐温引擎)

package com.joelbrun.jetskirider.tween; 

import com.badlogic.gdx.graphics.g2d.Sprite; 
import aurelienribon.tweenengine.TweenAccessor; 

public class SpriteAccessor implements TweenAccessor<Sprite> { 

    public static final int ALPHA = 0; 

    @Override 
    public int getValues(Sprite target, int tweenType, float[] returnValues) { 
     switch (tweenType) { 
      case ALPHA: 
       returnValues[0] = target.getColor().a; 
       return 1; 
      default: 
       assert false; 
       return -1; 
     } 
    } 

    @Override 
    public void setValues(Sprite target, int tweenType, float[] newValues) { 
     switch (tweenType){ 
      case ALPHA: 
       target.setColor(target.getColor().r, target.getColor().g, target.getColor().b, newValues[0]); 
      default: 
       assert false; 
     } 
    } 
} 
+2

的问题是在你的build.gradle文件。你能证明吗?你在哪里放图书馆的罐子? – Tenfour04

+0

这是在我的根项目文件夹。看看https://github.com/JoelBrun/JetskiRider?files=1 – jobr97

回答

1

编辑您的build.gradle加载从库吐温LIB(也可能是有一个新的版本,我自己的项目,这个工程) :

project(":core") { 
apply plugin: "java" 

dependencies { 
    compile "com.badlogicgames.gdx:gdx:$gdxVersion" 
    compile "com.badlogicgames.gdx:gdx-freetype:$gdxVersion" 
    compile "aurelienribon:tweenengine:6.3.3" 
    compile "aurelienribon:tweenengine:6.3.3:sources" 
} 
} 

,你可能需要删除补间罐子从libs文件夹

+0

我不得不安装maven并将这些文件添加到我的本地存储库,但我认为那就是你想告诉我的:D – jobr97