运行cocos2d-x,vs“输出”报错,错误内容是:Assert failed: child already added. It can't be added again。Assertion failed!
这个错误困扰了我两天。网上关于这个bug的解释和解决方案几乎没有。看了网上关于这个错误零星的解释,我一开始以为是:精灵已经存在,这个实例化的精灵不能再次被添加,其实不是,因为我是把精灵的实例化放在触摸点击回调函数中的,所有每次点击都会重新创建这个实例。后来突然发现,报错的原因应该是:一个精灵添加到屏幕之后,有了一个特定的显示位置,这个精灵不能再次被利用,又把它添加到另一个位置上。即:每一个精灵都只能有一个特定的显示位置。
解决办法:目前我用的解决办法就是每次循环都创建一个新的实例化对象,这样就不会把一个精灵添加到多个位置上去了。
void RMain::draw(int x, int y, int a)
{
char b = ((a == 1) ? -1 : 1); //敌方子
int x1, y1, x2, y2;
bool sign = false; //是否越过敌方子
for (x1 = x - 1; x1 >= 0 && ChessBoard[x1][y]; x1--) //判断上方
{
if (ChessBoard[x1][y] == b)
sign = true;
else
{
if (sign)
{
log("ChessBoard == b1");
for (x2 = x - 1; x2 > x1; x2--) { //判断下方
Sprite