所以我明白为什么我会出错;我想知道一个工作周围,如果可能或替代!
SpriteRenderable
用于对屏幕上的所有对象进行排序和渲染,它包含实例的位置和精灵。
public static ArrayList<SpriteRenderable> spriteRenderables;
还具有静态功能
Render(SpriteBatch batch)
update
每一个上的函数。
public static void Render() {
spriteBatch.begin();
for (ListIterator<SpriteRenderable> iter =
spriteRenderables.listIterator(); iter.hasNext();) {
SpriteRenderable spriteRenderable = iter.next();
spriteRenderable.update(delta);
spriteRenderable.sprite.draw(spriteBatch);
}
spriteBatch.end();
}
public abstract void update();
我还有一节课
Player
这扩展了
类,因此它会自动添加到静态ArrayList,并在每个渲染周期更新。这和
Gun
和
Bullet
这个
枪
阶级和
类扩展
也在
玩家
(Gdx.input.isButtonPressed(Input.Buttons.LEFT))
然后调用Guns shoot方法,该方法在tern中调用
Bullet shot = new Bullet();
在玩家更新,玩家开火之前,这一切正常;实例化的项目符号在循环自身时添加到静态ArrayList。造成:
Exception in thread "LWJGL Application" java.util.ConcurrentModificationException
我试着用一个环捕捉它;但是,由于该异常,最终无法渲染任何精灵。