Android 为什么我会有一种不正常的感觉?

Android 为什么我会有一种不正常的感觉?,android,andengine,indexoutofboundsexception,Android,Andengine,Indexoutofboundsexception,我正在使用AndEngine制作一个游戏,我不知道为什么会出现这个错误。它以前似乎工作过,我不确定是什么代码更改导致了错误。有人有什么想法吗 07-02 01:34:44.747: E/AndroidRuntime(19252): java.lang.ArrayIndexOutOfBoundsException 07-02 01:34:44.747: E/AndroidRuntime(19252): at com.prattia.webs.testgfx5.TestGFX5Acti

我正在使用AndEngine制作一个游戏,我不知道为什么会出现这个错误。它以前似乎工作过,我不确定是什么代码更改导致了错误。有人有什么想法吗

    07-02 01:34:44.747: E/AndroidRuntime(19252): java.lang.ArrayIndexOutOfBoundsException
07-02 01:34:44.747: E/AndroidRuntime(19252):    at com.prattia.webs.testgfx5.TestGFX5Activity$2.onAreaTouched(TestGFX5Activity.java:249)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.entity.scene.Scene.onAreaTouchEvent(Scene.java:409)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.entity.scene.Scene.onSceneTouchEvent(Scene.java:328)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.engine.Engine.onTouchScene(Engine.java:452)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.engine.Engine.onTouchEvent(Engine.java:438)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.input.touch.controller.BaseTouchController$TouchEventRunnablePoolItem.run(BaseTouchController.java:102)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:54)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.util.adt.pool.RunnablePoolUpdateHandler.onHandlePoolItem(RunnablePoolUpdateHandler.java:1)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.util.adt.pool.PoolUpdateHandler.onUpdate(PoolUpdateHandler.java:88)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.input.touch.controller.BaseTouchController.onUpdate(BaseTouchController.java:62)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.engine.Engine.onUpdate(Engine.java:584)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.engine.Engine.onTickUpdate(Engine.java:548)
07-02 01:34:44.747: E/AndroidRuntime(19252):    at org.andengine.engine.Engine$UpdateThread.run(Engine.java:820)
我的代码的那一部分:

private void createFiller(float x, float y) {
        fillerNum++;
        Log.e("Creating Filler",Integer.toString(fillerNum));
        filler[fillerNum].active=true;
        filler[fillerNum].sprite = new Sprite(x-fillerTR.getWidth()/2,y - fillerTR.getHeight()/2,fillerTR,getVertexBufferObjectManager())
        {
            @Override
            public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY){
                if(pSceneTouchEvent.isActionMove()){
                    setPosition(pSceneTouchEvent.getX() - getWidth() / 2, pSceneTouchEvent.getY() - getHeight() / 2);
                }
                if(pSceneTouchEvent.isActionUp()){
                    Log.e("Action Up",Integer.toString(fillerNum));
                    if(!filler[fillerNum].body.getUserData().equals("destroyed"))//Line 249
                        createStationaryFiller();
                }
                return true;
            }
        };

        scene.registerTouchArea(filler[fillerNum].sprite);

        filler[fillerNum].body = PhysicsFactory.createCircleBody(mPhysicsWorld, filler[fillerNum].sprite, BodyType.DynamicBody, FIXTURE_DEF);
        filler[fillerNum].body.setUserData("fill");
        mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(filler[fillerNum].sprite, filler[fillerNum].body, true, true));
        scene.attachChild(filler[fillerNum].sprite);
    }

如果有任何其他解释或代码需要,让我知道,我可以张贴它。我被难住了

行号会很好,但我怀疑fillerNum大于填充数组的大小。
无论如何,堆栈跟踪显示异常是在第249行抛出的,因此找到该行,您就会发现问题:)

根据错误描述,您正在访问索引处的数组元素,其值等于或大于数组的长度。我猜
fillerNum
大于或等于
filler.length
。私有void createFiller(float x,float y){fillerNum++;"在方法开始时递增计数器?对我来说似乎有问题。但是如果没有看到该区域的其余代码,人们只能猜测…@Cruceo你是对的。我最后一次的递增碰巧超过了限制。谢谢。是的,正如Harry Joy和我指出的,数组的大小可能小于
fillerNum