If I create CCMenuItemSprite:
CCMenuItemSprite* menuItemSprite = CCMenuItemSprite::itemFromNormalSprite(sprite, NULL, target, selector);
menuItemSprite ->setColor(ccc3(0, 255, 0);//crash on m_pSelectedImage->convertToRGBAProtocol()->setColor(color);
menuItemSprite ->setOpacity(255);//crash on m_pSelectedImage->convertToRGBAProtocol()->setOpacity(opacity);
So assert is missing in:
bool CCMenuItemSprite::initFromNormalSprite(CCNode* normalSprite, CCNode* selectedSprite, CCNode* disabledSprite, SelectorProtocol* target, SEL_MenuHandler selector)
or tests m_pSelectedImage in mentioned functions.
walzer
#2
oops, you can not pass NULL to the 2nd param of CCMenuItemSprite::itemFromNormalSprite.
This code snip works
CCSprite* sprite = CCSprite::spriteWithFile("CloseNormal.png");
CCSprite* sprite2 = CCSprite::spriteWithTexture( sprite->getTexture() );
CCMenuItemSprite* pCloseItem = CCMenuItemSprite::itemFromNormalSprite(sprite,
sprite2,
this,
menu_selector(HelloWorld::menuCloseCallback));
pCloseItem->setColor(ccc3(0,255,0));
pCloseItem->setOpacity(255);
pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );
Yes I agree and thats the reason for adding assertion to avoid inssert second NULL parametr.