我在看《cocos2d-x手机游戏开发》这本书的时候,跟着做魔塔游戏的例子,做到代码重构的地方,发现原先在HelloWorldScene.cpp中init()函数创建的一个close的MenuItem,可以用宏CC_BREAK_IF判断是否成功创建,如下:
CCMenuItemImage *pCloseItem = CCMenuItemImage::itemFromNormalImage(
“CloseNormal.png”,
“CloseSelected.png”,
this,
menu_selector(HelloWorld::menuCloseCallback));
CC_BREAK_IF(! pCloseItem);
而将控件重构到一个独立的ControlLayer.cpp中,在该cpp的init()函数中创建一个close的MenuItem,不能用宏CC_BREAK_IF判断了。
如下:
bool ControlLayer::init(void)
{
if (!CCLayer::init())
{
return false;
}
CCMenuItemImage *pCloseItem = CCMenuItemImage::itemFromNormalImage(
“CloseNormal.png”,
“CloseSelected.png”,
this,
menu_selector(ControlLayer::menuCloseCallback));
CC_BREAK_IF(pCloseItem);
}
报错: error C2043: illegal break
这是为什么呢? CC_BREAK_IF在使用时有什么限制吗?
