AndEngine 刪除sprite的問題

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

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

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


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



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


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

this.runOnUpdateThread(new Runnable() 
{  
    @Override  
    public void run() {  
        scene.detachChild(sprite);  
    }  
});


你可能感兴趣的:(detachChild,AngEngine)