AndEngine 刪除sprite的問題

以前在查找如何删除sprite的时候看到了这篇文章 java

http://tommycloud.iteye.com/blog/1276726 安全

只注意到使用这样的方法来删除元素。 ide


scene.detachChild(sprite);
文章的最后也说到安全的删除方法是放在更新线程里面来删除,可是在一开始的使用中我发现只用上面的语句也能够的,因此就忽略在更新线程中删除元素的作法。可是在后来的制做过程当中,须要一方面删除元素,另外一方面还要更新元素的位置等,这时候发现问题来了,常常会报以下错误:



java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)


也没有代码中的错误,而后google了。有人提到在runOnUpdateThread的中更新元素,而后就将更新元素位移的放在这个线程里面,可是问题依旧。最后才想到删除元素的那块我没有放在更新线程里面,而后再把上面的那篇文章从新看了下,发现问题的重点在于在同时更新画面的时候删除元素,这时候若是不在更新线程中删除元素的话颇有可能会报错了。因此在删除元素的的时候最好看下,是否还有更其余元素的动做,若是有的话,最好使用如下的方法了: this

this.runOnUpdateThread(new Runnable() 
{  
    @Override  
    public void run() {  
        scene.detachChild(sprite);  
    }  
});
相关文章
相关标签/搜索