gpt4 book ai didi

java - 如何修复此错误? "java.lang.IndexOutOfBoundsException"

转载 作者:行者123 更新时间:2023-12-02 07:54:26 25 4
gpt4 key购买 nike

我正在尝试使用 andengine 库 制作游戏。

当 Sprite Enemy1Sprite 到达相机顶部,并且我将其分离时,会抛出此异常:

java.lang.IndexOutOfBoundsException Invalid Index 12 size is 12

我必须分离 enemy1Sprite 因为它不断地从相机中创建子弹 Sprite 。

这是代码。

敌方1:

    package es.uah.juegomentos;

import org.anddev.andengine.engine.handler.timer.ITimerCallback;
import org.anddev.andengine.engine.handler.timer.TimerHandler;
import org.anddev.andengine.entity.sprite.Sprite;
import org.anddev.andengine.opengl.texture.region.TextureRegion;

public class Enemy1 extends Sprite {

boolean abajo = true;

public Enemy1(TextureRegion pTextureRegion) {
super(0, 0, pTextureRegion);

this.setPosition(JuegoMentosActivity.RANDOM.nextInt(JuegoMentosActivity.CAMERA_WIDTH), -10);
TimerHandler Enemy1fire = new TimerHandler(0.75f, true, enemigo1fireCallback);
JuegoMentosActivity.getmGameScene().registerUpdateHandler(Enemy1fire);
}

@Override
protected void onManagedUpdate(float pSecondsElapsed) {
super.onManagedUpdate(pSecondsElapsed);

float y = getY();

if (y >= 275) {abajo = false;}

if (abajo) {y = y + pSecondsElapsed * 125.0f;}
else {y = y - pSecondsElapsed * 125.0f;}



this.setPosition(getX(), y);
if (getY()<-10){this.getParent().detachChild(this);}
}

ITimerCallback enemigo1fireCallback = new ITimerCallback(){

@Override
public void onTimePassed(TimerHandler pTimerHandler) {

bala1 mbala1;

mbala1 = new bala1(getX()+(64*1/2),getY()+64,JuegoMentosActivity.getMbala1Texture().getTextureRegion(),true);
JuegoMentosActivity.getmGameScene().attachChild(mbala1);
}
};
}

在场景中创建新敌人:

    //Creamos el sprite del enemigo uno
ITimerCallback enemigo1CreatorCallback = new ITimerCallback(){

@Override
public void onTimePassed(TimerHandler pTimerHandler) {

mEnemy1Sprite = new Enemy1(mEnemy1Texture.getTextureRegion());
mGameScene.attachChild(mEnemy1Sprite);
}
};

TimerHandler Enemy1Creator = new TimerHandler(3.0f, true, enemigo1CreatorCallback);
mGameScene.registerUpdateHandler(Enemy1Creator);

谢谢

最佳答案

您确实回答了自己的问题 - 马塞洛是正确的,问题不在您发布的代码中,而是在您执行 detachChild 调用的地方 - 您需要在更新线程上调用它,如

runOnUpdateThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
yourScene.detachChild(yourEnemySprite);
}
});

关于java - 如何修复此错误? "java.lang.IndexOutOfBoundsException",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9824236/

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