“如何解决nullpointerException”的答案决不会解决这个问题。我知道空指针异常是什么。为什么在Android工作室的libGdx中引用一个mp3文件,创建一个空指针异常。
所以我正在做Brent Aureli的Code School教程,用libGdx制作飞鸟。我正在播放视频14. https://www.youtube.com/watch?v=EaOE8rFa_8Q在视频中的2:50,他展示了他的代码。我不断收到此错误:“LwjglApplication:无法初始化音频,禁用音频”在我添加libGdx“Music”对象后运行程序时。这是完整的错误列表。一切都在上面 “线程中的异常”LWJGL应用程序“java.lang.NullPointerException” 已经出现但应用仍然运行。现在它在这一行获得了这个空指针异常:
music = Gdx.audio.newMusic(Gdx.files.internal("music.mp3"));
在create()方法中。
我到处寻找答案。我尝试将mp3手动复制并粘贴到原始目录或资源目录中。这不起作用。在这里:Why does android studio not recognize .wav / .mp3 files,
是如何处理这个问题的一个很好的例子。
我的代码:
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.mygdx.game.states.GameStateManager;
import com.mygdx.game.states.MenuState;
public class FlappyDemo extends ApplicationAdapter {
public static final int WIDTH = 480;
public static final int HEIGHT = 800;
public static final String TITLE = "Flappy Bird";
private GameStateManager gsm;
private SpriteBatch batch;
Texture img;
private Music music;
@Override
public void create () {
batch = new SpriteBatch();
gsm = new GameStateManager();
music = Gdx.audio.newMusic(Gdx.files.internal("music.mp3"));
music.setLooping(true);
music.setVolume(0.1f);
music.play();
gsm.push(new MenuState(gsm));
Gdx.gl.glClearColor(1, 0, 0, 1);
}
@Override
public void render () {
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
gsm.update(Gdx.graphics.getDeltaTime());
gsm.render(batch);
}
@Override
public void dispose () {
batch.dispose();
img.dispose();
music.dispose();
}
}
资产中的所有png文件都可以正常工作。我在Android Studio中放的任何mp3都有一个“?”符号作为图标 如果有人有任何想法,将非常感激。