今天在Cocos2d-x中的HelloWorld例程中想试试一圈一圈的水波效果,打算实现鼠标按下后在相应的位置出现水波效果,于是我给HelloWorld添加了一个构造函数:
HelloWorld::HelloWorld()
{
setTouchEnabled(true);
}
并在构造函数里启用了鼠标按下的 事件,然后重现实现了ccTouchesEnded函数:
void HelloWorld::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)
{
CCSetIterator it = pTouches->begin();
CCTouch* touch = (CCTouch*)(*it);
CCPoint location = touch->getLocation();
CCNode* s = getChildByTag(1);
CCActionInterval* effect =CCRipple3D::create(ccp(location.x, location.y), 128, 12, 120, ccg(128,128), 5);
s->runAction(effect);
}
但是运行的时候无论我怎么点程序始终没有响应我的单击事件,调试发现isTouchEnabled()返回的是false,也就是我没有启用按下事件。百思不得其解。最后看了Cocos2d-x的其它例子,发现它们都是在CCLayer::init()之后再调用
setTouchEnabled(true)函数的,于是我在CC_BREAK_IF(! CCLayer::init());后面添加setTouchEnabled(true)函数,之后运行一切正常。所以以后还是得多多参考Cocos2d-x自带的例子。