急!求助,为什么ccTouchEnded有时候会不响应?

  • 本帖最后由 Mike峰 于 2013-4-23 09:15 编辑 *

我自己写了一个类,继承了CCControlButton,重写了他的ccTouchBegan和ccTouchEnded方法,但是当我使用这个类的时候,他的ccTouchEnded函数有时候会不响应,导致在这个函数中调用的回调函数不起作用。有人知道这是为什么吗?下面是我的部分源码:

bool SCControlButton::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
if (!isTouchInside(pTouch) || !isEnabled())
{
return false;
}
//这是我改的地方

if(m_eState == CCControlStateHighlighted)
m_eState = CCControlStateNormal;
else
m_eState=CCControlStateHighlighted;
m_isPushed=true;
this->setHighlighted(true);
sendActionsForControlEvents(CCControlEventTouchDown);

isMoved = false;

return true;

}

void SCControlButton::ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent)
{
m_isPushed = false;
setHighlighted(false);

//这是我改的地方

if(isMoved)
return;

if (isTouchInside(pTouch))
{
    sendActionsForControlEvents(CCControlEventTouchUpInside);
}
else
{
    sendActionsForControlEvents(CCControlEventTouchUpOutside);
}

}