I create a button which is a ccsprite. However, it has no response although I touch it. What wrong with my code?
The code of the button:
#include "pauseButton.h"
#include "pauseLayer.h"
using namespace cocos2d;
pauseButton::pauseButton() {
}
pauseButton::~pauseButton() {
}
void pauseButton::onEnter() {
CCDirector* pDirector = CCDirector::sharedDirector();
pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
CCSprite::onEnter();
}
void pauseButton::onExit() {
CCDirector* pDirector = CCDirector::sharedDirector();
pDirector->getTouchDispatcher()->removeDelegate(this);
CCSprite::onExit();
}
pauseButton* pauseButton::touchSpriteWithFile(const char *file) {
pauseButton *sprite = new pauseButton();
if (sprite && sprite->initWithFile(file)) {
sprite->autorelease();
return sprite;
}
return NULL;
}
bool pauseButton::initWithFile(const char *file) {
CCSprite::initWithFile(file);
return true;
}
CCRect pauseButton::rect() {
CCSize size = getTexture()->getContentSize();
return CCRectMake(-size.width/2, -size.height/2, size.width, size.height);
}
bool pauseButton::containsTouchLocation(CCTouch *touch) {
return rect().containsPoint(convertTouchToNodeSpaceAR(touch));
}
bool pauseButton::CCTouchBegan(CCTouch *touch, CCEvent *event) {
if (containsTouchLocation(touch))
return true;
return false;
}
void pauseButton::CCTouchMoved(CCTouch *touch, CCEvent *event) {
}
void pauseButton::CCTouchEnded(CCTouch *touch, CCEvent *event) {
pauselayer = pauseLayer::create();
CCDirector::sharedDirector()->pause();
this->getParent()->getParent()->addChild(pauselayer);
}
The code in the layer class:
bool HelloWorld::init() {
...
...
this->setTouchEnabled(true);
pauseButton *pausebutton = pauseButton::touchSpriteWithFile(button_red.png);
pausebutton->setPosition(ccp(size.width/2, size.height/2));
this->addChild(pausebutton);
...
...
}