这是本人的课堂笔记,刚学cocos2dx,各位大神请不要在意笔记质量。。。
==================================.h===================================
#ifndef __TestHero__mySprite__
#define __TestHero__mySprite__
#include "cocos2d.h"
USING_NS_CC;
class mySprite:public CCSprite,public CCTouchDelegate
{
public:
//设置init初始化内容函数
void initDate();
//写一个通过图片名称new sprite的静态函数
static mySprite* create(char *fileName);
//写一个通过数据new sprite的静态函数
static mySprite* create(CCSpriteFrame *frame);
CREATE_FUNC(mySprite);
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
// virtual void onEnter();
// virtual void onExit();
};
#endif
==================================.cpp===================================
#include "mySprite.h"
mySprite* mySprite::create(char *fileName)
{
//new一个sprite
mySprite *sprite = new mySprite();
//根据传进来的是file类型,调用父类的initWiteFile方法
if(sprite && sprite->initWithFile(fileName))
{
//sprite调用初始化函数
sprite->initDate();
//返回sprite
return sprite;
}
//删除sprite
delete sprite;
//sprite=null
sprite = NULL;
return NULL;
}
mySprite* mySprite::create(CCSpriteFrame *frame)
{
mySprite *sprite = new mySprite();
//根据传进来的是frame类型,调用父类的initwithspriteframe方法
if(sprite && sprite->initWithSpriteFrame(frame))
{
//sprite调用初始化函数
sprite->initDate();
return sprite;
}
delete sprite;
sprite = NULL;
return NULL;
}
void mySprite::initDate()
{
//80是一个优先级,优先级越低,就越先执行,
//true:是否冒泡到后面层上的点击事件,如果为true则,阻止冒泡,则不会执行
//后面的层上的事件,否则先执行完当前的事件以后,还会执行后面层的事件.
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 80, true);
}
bool mySprite::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
//获取鼠标点击的坐标
CCPoint p = pTouch->getLocation();
//获取图片的矩形
CCRect rect = this->boundingBox();
//如果鼠标点击的坐标在矩形的范围内
if(rect.containsPoint(p))
{
CCLog("点击了了了了了了");
return true;
}
return false;
}
void mySprite::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{
}
void mySprite::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{
}