gpt4 book ai didi

java - Android Studio 应用程序甚至在使用 Libgdx 打开之前就停止工作

转载 作者:行者123 更新时间:2023-11-30 10:23:17 26 4
gpt4 key购买 nike

我在 Android Studio 上使用 Libgdx 构建了一个简单的应用程序来显示由 6 个 .png 图像组成的动画,我制作了一个 TextureAtlas。该项目构建良好,没有任何错误,但是当我尝试在模拟器中运行该应用程序时,它在打开时崩溃。我知道这不是模拟器的错误,因为我已经使用相同的配置和库构建了一个应用程序来成功显示文本,并且这个应用程序在我的 Galaxy Note 5 上也崩溃了。

这是核心 .java 文件的代码:

package com.mygdx.mytestgame;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.TextureAtlas;
import com.badlogic.gdx.graphics.g2d.TextureRegion;

public class MyTestGame extends ApplicationAdapter {
private SpriteBatch batch;
private TextureAtlas shooterAtlas;
private Animation<TextureRegion> animation;
private float timePassed = 0;

@Override
public void create () {
batch = new SpriteBatch();

shooterAtlas = new TextureAtlas(Gdx.files.internal("shooter.atlas"));
animation = new Animation<TextureRegion>(1/30f, shooterAtlas.getRegions());
}

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

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

batch.begin();
timePassed += Gdx.graphics.getDeltaTime();
batch.draw(animation.getKeyFrame(timePassed, true), 300, 500);
batch.end();
}

}

这是 Android list 文件:

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk android:minSdkVersion="9" android:targetSdkVersion="26" />

<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/GdxTheme" >
<activity
android:name="com.mygdx.mytestgame.AndroidLauncher"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

这是 logcat 上显示的崩溃:

11-02 12:52:27.514 3634-3666/com.mygdx.mytestgame E/AndroidRuntime: FATAL EXCEPTION: GLThread 193
Process: com.mygdx.mytestgame, PID: 3634
com.badlogic.gdx.utils.GdxRuntimeException: Error reading file: shooter.atlas (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.mygdx.mytestgame.MyTestGame.create(MyTestGame.java:21)
at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:275)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1555)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1270)
Caused by: java.io.FileNotFoundException: shooter.atlas
at android.content.res.AssetManager.openAsset(Native Method)
at android.content.res.AssetManager.open(AssetManager.java:374)
at android.content.res.AssetManager.open(AssetManager.java:348)
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.mygdx.mytestgame.MyTestGame.create(MyTestGame.java:21) 
at com.badlogic.gdx.backends.android.AndroidGraphics.onSurfaceChanged(AndroidGraphics.java:275) 
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1555) 
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1270) 

它说读取文件“shooter.atlas”时出错,这是我用于动画的 TextureAtlas。此文件名正确且位于 C:\Users\user\Documents\libGDX Projects\android\assets

解决这个问题的方法是什么?

最佳答案

我解决了这个问题,事实证明这个问题非常微不足道。我从在线资源下载了图集文件,该文件的图集格式不正确。相反,它是一个包含 .png 文件的文件夹。所以我提取了这些 .png 文件,并使用 gdx-texturepacker.jar 工具从 .png 文件中手动打包了一个 Atlas 文件,该工具可以从 here 下载。 .我将 Atlas 文件导出到同一工作目录:C:\Users\user\Documents\libGDX Projects\android\assets 并将“shooter.atlas”重命名为新 Atlas 文件的名称: "shooter2.atlas"瞧瞧!

关于java - Android Studio 应用程序甚至在使用 Libgdx 打开之前就停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47073169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com