我用的是cocos2d-x-3.2版本,对于cpp-tests---->BugsTest中的Bug-458有不理解的地方,想请教下大家。先看源码:
bool Bug458Layer::init()
{
if(BugsTestBaseLayer::init())
{
// ask director the the window size
auto size = Director::getInstance()->getWinSize();
auto question = new QuestionContainerSprite();
auto question2 = new QuestionContainerSprite();
question->init();
question2->init();
// ;
// ;
auto sprite = MenuItemSprite::create(question2, question, CC_CALLBACK_1(Bug458Layer::selectAnswer, this) );
question->release();
question2->release();
auto layer = LayerColor::create(Color4B(0,0,255,255), 100, 100);
auto layer2 = LayerColor::create(Color4B(255,0,0,255), 100, 100);
auto sprite2 = MenuItemSprite::create(layer, layer2, CC_CALLBACK_1(Bug458Layer::selectAnswer, this) );
auto menu = Menu::create(sprite, sprite2, nullptr);
menu->alignItemsVerticallyWithPadding(100);
menu->setPosition(Vec2(size.width / 2, size.height / 2));
// add the label as a child to this Layer
addChild(menu);
return true;
}
return false;
}
void Bug458Layer::selectAnswer(Ref* sender)
{
log("Selected");
}
我发现sprite2在按下去时会变成红色的,离开后会恢复到蓝色的,即sprite2的功能是完全与我预期一样的!
- 但是同样的创建方法,为什么sprite没有这个效果呢?sprite不管我是否按下去,文字颜色都不会变化,始终是红色!
- 为什么question和question2要调用下release,而同样方式创建的layer和layer2却不需要呢?
请知道的朋友指教下!