1

私はAndroidゲーム開発に不慣れで、AndEngine GLES2Javaを使用しています。配列(face1)のインデックスが不正であることに関連するエラーが発生します。問題を解決できないので、助けが必要です。コード:

@Override
public Scene onCreateScene() {
    this.mEngine.registerUpdateHandler(new FPSLogger());

    final Scene scene = new Scene();
    scene.setBackground(new Background(0.09804f, 0.6274f, 0.8784f));
    final float centerX1 = 400;
    final float centerY1 = 50;
    final Sprite[] face1 = new Sprite[i];
    face1[i] =  new Sprite(centerX1, centerY1, this.m2FaceTextureRegion, this.getVertexBufferObjectManager());
    final float centerX = (CAMERA_WIDTH - this.mFaceTextureRegion.getWidth()) / 2;
    final float centerY = (CAMERA_HEIGHT - this.mFaceTextureRegion.getHeight()) / 2;
    final Sprite face = new Sprite(centerX, centerY, this.mFaceTextureRegion, this.getVertexBufferObjectManager()) {
        @Override
        public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {

            if(!face1[i].collidesWith(this))
            {
                x+=1; 
            this.setPosition(x, 50 );
            }
            else
            {
                x=60;
                this.setPosition(x, 50 );
            }
            return true;
        }
    };

    scene.attachChild(face);
    scene.registerTouchArea(face);
    scene.setTouchAreaBindingOnActionDownEnabled(true);
    face.setScale(4);
    scene.attachChild(face1[i]);
    face1[i].setScale(2);


    return scene;
}

エラー:

11-11 12:12:42.690: E/AndEngine(13291): java.lang.ArrayIndexOutOfBoundsException

ありがとう。

4

1 に答える 1

0

ログから、例外がで発生しているように見えますcom.example.sheeprun1.BaseActivity.onCreateScene(BaseActivity.java:89)。この行のコードと、そこで実行されている配列操作を確認できますか...

final Sprite[] face1 = new Sprite[i];編集1:この時点で配列を作成するときは、の値をiゼロにしないでください。

配列から値にアクセスするときは、インデックスが配列のサイズ/長さよりも小さいことを常に確認してください

if(face!=null && i<face.length){
face1[i] = new Sprite(centerX1, centerY1, this.m2FaceTextureRegion, this.getVertexBufferObjectManager());
}
于 2012-11-11T13:46:52.930 に答える