0

load という名前の 1 つのクラスにテクスチャを読み込もうとしましたが、このクラスには他のアセットの読み込みと表示が含まれています。

後で別のクラスで、クラス ロードのオブジェクトを作成して同じテクスチャソルブボックスを使用しようとしました。

  public class load{

    @Override
    public void show() {

        try {
            XmlReader reader = new XmlReader();
            Element element = reader.parse(Gdx.files.internal(
                    "data/loadassets.xml").read());.....

            Element help = element.getChildByName("help");...
            solvebox = new Texture(
                    Gdx.files.internal("data/" + help.get("box")));
    }

    ...
    }

今、別のクラスでこれのオブジェクトを作成し、それを描画しようとしました...

class correct{
....
@Override
    public void render(float delta) {
    load obj=new load();
    batch.begin();
    batch.draw(obj.solvebox, ((w / 2) - (w / 15f)), (h / 3));
    batch.end();
...
    }

NullPointerExceptionしかし、クラスロードのオブジェクトを使用して2回目に描画したいこの場所に表示されます

> 09-06 16:56:04.910: E/AndroidRuntime(30523): FATAL EXCEPTION: GLThread
> 26856
>     09-06 16:56:04.910: E/AndroidRuntime(30523): java.lang.NullPointerException
>     09-06 16:56:04.910: E/AndroidRuntime(30523):  at com.badlogic.gdx.graphics.g2d.SpriteBatch.renderMesh(SpriteBatch.java:1042)
>     09-06 16:56:04.910: E/AndroidRuntime(30523):  at com.badlogic.gdx.graphics.g2d.SpriteBatch.end(SpriteBatch.java:267)
>     **
>     
>     > 09-06 16:56:04.910: E/AndroidRuntime(30523):    at
>     > com.invntn.screens.CorrectScreen.render(CorrectScreen.java:86)
>     
>     **
>     09-06 16:56:04.910: E/AndroidRuntime(30523):  at com.badlogic.gdx.Game.render(Game.java:46)
>     09-06 16:56:04.910: E/AndroidRuntime(30523):  at com.invntn.trycolor.TryColor.render(TryColor.java:42)
>     09-06 16:56:04.910: E/AndroidRuntime(30523):  at com.badlogic.gdx.backends.android.AndroidGraphics.onDrawFrame(AndroidGraphics.java:457)
>     09-06 16:56:04.910: E/AndroidRuntime(30523):  at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1516)
>     09-06 16:56:04.910: E/AndroidRuntime(30523):  at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
4

2 に答える 2

0

2 番目のコード スニペットを見ると、obj.solvebox を使用する前に obj.show() を呼び出していないようです。そのため、ソルブボックスは初期化されていません。

于 2013-09-06T13:25:16.800 に答える