【问题标题】:My app suddenly stops我的应用突然停止
【发布时间】:2017-08-10 22:34:18
【问题描述】:

我最近将我的应用上传到了 google play store Helicopter Combat 但它时不时地崩溃。我在这里收到错误报告:

java.lang.ArrayIndexOutOfBoundsException: length=3; index=3
    at de.krissini.server.Animation.getImage(Animation.java:36)

这是引用的代码:

public class Animation {

    private Bitmap[] frames;
    private int currentFrame;
    private long startTime, delay;
    private boolean playedOnce;

    public void setFrames(Bitmap[] frames){
        this.frames = frames;
        currentFrame = 0;
        startTime = System.nanoTime();
    }

    public void setDelay(long d){
        delay = d;
    }
    public void setFrame(int i){
        currentFrame = i;
    }
    public void update(){
        long elapsed = (System.nanoTime()-startTime)/1000000;
        if(elapsed>delay){
            currentFrame++;
            startTime = System.nanoTime();
        }
        if(currentFrame == frames.length){
            currentFrame = 0;
            playedOnce = true;
        }
    }
    public Bitmap getImage(){
        return frames[currentFrame];     // line 36
    }
    public int getFrame(){
        return currentFrame;
    }
    public boolean playedOnce(){
        return playedOnce;
    }

}

我了解该错误,但如何防止它发生? 我感谢每一个答案

【问题讨论】:

    标签: android arrays exception indexing


    【解决方案1】:

    该错误是由于错误地认为数组的长度与最大索引相同。长度从 1 开始,索引从 0 开始,它们总是相差 1。

    改变这个:

    if(currentFrame == frames.length ){
        // your reset code
    }
    

    到这里:

    if(currentFrame == frames.length - 1){
        // your reset code
    }
    

    【讨论】:

      猜你喜欢
      • 2020-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多