有些用户在我的应用程序开发的应用程序中过于频繁地崩溃。 我没有分离/附加任何对象,但我仍然收到此错误。我正在使用对象可见性和unregistertoucharea虽然我没有放入runonupdate。这会导致这个问题。如果没有,请有人告诉我可能会有什么?
这是我从Google Play获得的崩溃报告。
java.lang.IndexOutOfBoundsException: Invalid index 2, size is 2
at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
at java.util.ArrayList.get(ArrayList.java:308)
at org.andengine.c.a.d(Unknown Source)
at org.andengine.c.c.e.d(Unknown Source)
at org.andengine.c.a.a(Unknown Source)
at org.andengine.b.a.b(Unknown Source)
at org.andengine.b.a.a(Unknown Source)
at org.andengine.opengl.e.g.onDrawFrame(Unknown Source)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1523)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1240)
有时候游戏会在游戏中崩溃,有时会在重启游戏时崩溃
当游戏结束时,我正在调用以下功能
public void GameOver(){
yourScoreText.setText(""+score);
restart_button.setVisible(true);
leaderboard_button.setVisible(true);
share_button.setVisible(true);
gameOverText.setVisible(true);
gameOverOverlay.setVisible(true);
yourScoreText.setVisible(true);
highScoreText.setVisible(true);
this.registerTouchArea(restart_button);
this.registerTouchArea(leaderboard_button);
this.registerTouchArea(share_button);
}
按下重启时,我正在调用以下功能。
public void RestartGame(){
restart_button.setVisible(false);
leaderboard_button.setVisible(false);
share_button.setVisible(false);
gameOverText.setVisible(false);
gameOverOverlay.setVisible(false);
yourScoreText.setVisible(false);
highScoreText.setVisible(false);
this.unregisterTouchArea(restart_button);
this.unregisterTouchArea(leaderboard_button);
this.unregisterTouchArea(share_button);
score = 0;
scoreText.setText("Score: "+score);
Log.d("game start","game has been started");
StartScreen();
}
public void StartScreen(){
leaderboard_home_button.setVisible(true);
rate_button.setVisible(true);
if(activity.getNoAds()==0){
no_ads_button.setVisible(true);
this.registerTouchArea(no_ads_button);
}
if(isMute){
sound_off_button.setVisible(true);
this.registerTouchArea(sound_off_button);
} else {
sound_on_button.setVisible(true);
this.registerTouchArea(sound_on_button);
}
this.registerTouchArea(leaderboard_home_button);
this.registerTouchArea(rate_button);
}
答案 0 :(得分:3)
数组索引从0开始计数。 因此,如果Array的size = 2,它有以下索引:0,1。所以在这种情况下,索引号2不存在。
PS:如果您需要更多详细信息,请提供一些代码,我将编辑我的答案;)
答案 1 :(得分:0)
我认为问题依赖于初始化Text对象。 初始化时,需要设置它的最大长度:
private Text highScoreText = new Text(SOME_X, SOME_Y, resourceManager.font, "New Best: 1234567890", new TextOptions(HorizontalAlign.CENTER), vbom);
别忘了为Score文本对象做同样的事情。