getShaderProgram()

场景:cocos2d-x 晋级2.0以后报错 Assertion failed: (getShaderProgram()), function draw

cocos2d-x 升级2.0以后报错 Assertion failed: (getShaderProgram()), function draw,
       最近尝试着把我们以前用cocos2d-x 1.x写的代码升级到2.x,改动挺大,大部分创建代码都改成create了,一顿查找替换以后,亲幸的是大部分代码都ok,不过遇到一个这样的错误,找了我好久:

Assertion failed: (getShaderProgram()), function draw, file /Users/limin/backup/point21/trunk/blackjackIos/blackjack/libs/cocos2dx/sprite_nodes/CCSprite.cpp, line 579.


出现这个的原因是我们有一个类继承了CCSprite,但是本身没有texture,只是用来管理一堆子的ccsprite,自己写的初始化代码

bool TOSelfHeadBox::init(FMGameUser* user){

    initData(user);


    return true;

}


TOSelfHeadBox* TOSelfHeadBox::initSelfHeadBox(FMGameUser* user){

    TOSelfHeadBox *pRet = new TOSelfHeadBox();

if (pRet && pRet->init(user)){

pRet->autorelease();

return pRet;

}

    

    CC_SAFE_DELETE(pRet);

    return NULL;

}


报错是shader没有指定,后来研究了半天CCSprite的代码,找到解决方案,init里面增加如下代码:

bool TOSelfHeadBox::init(FMGameUser* user){

    if(!initWithTexture(NULL, CCRectZero)){

       return false;

   }

    initData(user);

   

    return true;

}

问题解决,给初始化一个空的texture