我正在开发android cocos2d游戏。
除了这次随机崩溃之外,每件事情都很好。
当我尝试替换场景时,它给出了我的异常,下面是相同的堆栈跟踪:
java.util.ConcurrentModificationException
at java.util.ArrayList$ArrayListIterator.next(ArrayList.java:569)
at org.cocos2d.nodes.CCNode.onEnter(CCNode.java:1351)
at org.cocos2d.layers.CCLayer.onEnter(CCLayer.java:173)
at org.cocos2d.nodes.CCNode.onEnter(CCNode.java:1352)
at org.cocos2d.layers.CCLayer.onEnter(CCLayer.java:173)
at org.cocos2d.nodes.CCNode.onEnter(CCNode.java:1352)
at org.cocos2d.nodes.CCDirector.setNextScene(CCDirector.java:1238)
at org.cocos2d.nodes.CCDirector.drawCCScene(CCDirector.java:705)
at org.cocos2d.nodes.CCDirector.onDrawFrame(CCDirector.java:665)
at org.cocos2d.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1245)
at org.cocos2d.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1056)
这是我替换场景的代码:
CCDirector.sharedDirector().replaceScene(GameLayer.scene(activityContext,null));
它工作正常一段时间但过了一段时间它会崩溃并再次开始正常工作,然后在一段时间后再次崩溃。
请建议我解决一些问题。
答案 0 :(得分:1)
异常表示正在迭代列表时正在修改列表。给定调用堆栈,看起来Cocos正在迭代场景中的节点来绘制它们。在发生这种情况时,似乎正在添加或删除场景中的节点。
这可能是因为您正在修改场景:
检查在场景中添加或删除内容的位置,以确保在绘制时不会发生这种情况,并且只能从正确的线程(或通过适当的同步)完成。