`
HeLinHang
  • 浏览: 141709 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

重写带点击事件的CCSprite

 
阅读更多

要想CCSprite具有点击事件,需要继承CCTargetedTouchDelegate(单点)或者CCStandardTouchDelegate(多点),CCTargetedTouchDelegate和CCStandardTouchDelegate都继承自

CCTouchDelegate

然后在CCSprite的OnEnter中添加

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-129,true);

在OnExit中添加

CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);

重写

virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);  

virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);  

virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); 

 

例:

#ifndef _CUSTOMER_SPRITE_H_
#define _CUSTOMER_SPRITE_H_
#include "cocos2d.h"
USING_NS_CC;
class SpriteClickListener{
public:
	virtual void spriteClicked() = 0;
};
class CustomSprite:public CCSprite,public CCTargetedTouchDelegate
{
public:
	void onEnter();
	void onExit();
	static CustomSprite * createWithFile(const char * fileName);
	virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);  
	virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);  
	virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);  
	void setOnClickListener(SpriteClickListener * listener);
private:
	SpriteClickListener * listener;
};
#endif

 

#include "CustomSprite.h"
void CustomSprite::onEnter()
{
	CCSprite::onEnter();
	CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-129,true);
}
void CustomSprite::onExit()
{
	CCSprite::onExit();
	CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
}
CustomSprite * CustomSprite::createWithFile(const char * fileName)
{
	CustomSprite *pobSprite = new CustomSprite();
	if (pobSprite && pobSprite->initWithFile(fileName))
	{
		pobSprite->autorelease();
		return pobSprite;
	}
	CC_SAFE_DELETE(pobSprite);
	return NULL;
}
void CustomSprite::setOnClickListener(SpriteClickListener * listener)
{
	this->listener = listener;
}
bool CustomSprite::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent)
{
	//CCLOG("spriteClicked");
	listener->spriteClicked();
	return true;
}
void CustomSprite::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
{

}
void CustomSprite::ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent)
{

}

 使用:

继承SpriteClickListener

重写

virtual void spriteClicked();

 

CustomSprite *spriteClose = CustomSprite::createWithFile("CloseNormal.png");
spriteClose->setPosition(CCPointMake(100,200));
spriteClose->setOnClickListener(this);
this->addChild(spriteClose);

 

 

分享到:
评论

相关推荐

    CCSprite基本处理和动画工程

    CCSprite的基本处理:缩放、旋转、混色 CCSprite的Action:帧动画,move+JUMP,move+rotate,FlowAction等,对于这些了解了,然后如果还有其他需求,相对就简单很多了.

    CCSprite 精灵动画

    CCSprite 精灵动画 动画示例精灵就是将图形资源加载到内存中,并根据游戏需要将其显示到屏幕中的工具,游戏中大到背景、UI,小到NPC、道具,只要是用图片展示的,都是精灵或它的子类。从技术上讲,精灵是一个可以...

    cocos2d 总结:三 CCSprite

    NULL 博文链接:https://o0o0o0o.iteye.com/blog/805581

    ccsprite播放动画的源代码

    在vs2010+cocos2d-x编译环境下实现的ccsprite精灵类的动画播放

    Cocos2d-x初入学堂-->CCSprite基本处理(2)工程

    Cocos2d-x初入学堂-->CCSprite基本处理(2):创建、缩放、旋转、混色;源码和资源都放在包里了

    Cocos2d-x学习笔记之CCScene、CCLayer、CCSprite的默认坐标和默认锚点实验

    结论:实践证明这三个东西的默认坐标都是0,0 默认锚点都是0.5,0.5。 bool HelloWorld::init() { bool bRet = false; do ... CCSprite * sprite = CCSprite::create("image1.... CCLog("CCSprite.x=%f,CCSprite.y=

    CCMask:使用 cocos2d-x v2.0 屏蔽 CCSprite

    CCSprite* object = CCSprite::create("HelloWorld.png");object->setPosition(ccp(mask->getContentSize().width/2, mask->getContentSize().height/2));// Create a masked imageCCMask* masked = CCMask::create...

    WP7坦克大战源码2012929

    4.根据点击手机屏幕,确定出坦克的方向,根据坦克的方向修改坦克的X,Y轴坐标,来实现坦克的移动 5.通过CCRect的CCRectIntersetsRect函数来进行碰撞检测,实现子弹打击坦克 6.代码完成后 安装zune后 就能把游戏部署...

    cocos2dx 精灵触摸事件的实现

    实现的cocos2dx 精灵触摸事件

    cocos2d-x的粒子创建

    CCSprite *pToBar=CCSprite::createWithTexture(texture); pToBar->setPosition(ccp(400,436)); pToBar->setScale(0.7f); this->addChild(pToBar,1); texture=CCTextureCache::sharedTextureCache()->addImage...

    cocos2dx 3.x实现精灵色相的修改

    Debug模式下,需要注释掉 CCGLProgramState.h apply() 方法中 switch语句default分支下的断言 调用方法 CSpriteWithHue *sprite = CCSpriteWithHue::create("HelloWorld.png"); sprite->setHue(4.6);...

    WP7坦克大战游戏

    4.根据点击手机屏幕,确定出坦克的方向,根据坦克的方向修改坦克的X,Y轴坐标,来实现坦克的移动 5.通过CCRect的CCRectIntersetsRect函数来进行碰撞检测,实现子弹打击坦克 6.代码完成后 安装zune后 就能把游戏部署...

    简单游戏开发

    sprite = CCSprite.sprite("p.png"); this.addChild(sprite); CGPoint point = CGPoint.ccp(200, 200); sprite.setPosition(point); // CCMoveTo moveTo = CCMoveTo.action(2, CGPoint.ccp(300, 600)...

    Cocos2dx 摇杆控件

    利用cocos2dx引擎开发的摇杆控件,继承自CCSprite,完美兼容2.2.1

    cocos2d-xna 写的一个小游戏demo坦克大战

    4.根据点击手机屏幕,确定出坦克的方向,根据坦克的方向修改坦克的X,Y轴坐标,来实现坦克的移动 5.通过CCRect的CCRectIntersetsRect函数来进行碰撞检测,实现子弹打击坦克 6.代码完成后 安装zune后 就能把游戏...

    Cocos2D-X核心类学习

    Cocos2D-X核心类 Cocos2D-X 引擎的设计思路是将游戏中的各个部分抽象成几个概念:导演、场景、布景层及人物精灵。 导演(CCDirector):游戏的...人物精灵(CCSprite):人物精灵可以分为玩家控制的主角类、敌人类等。

    小游戏开发

    小游戏开发纯代码 @interface CCFoePlane : CCSprite @property (readwrite) int planeType; @property (readwrite) int hp; @property (readwrite) int speed;

    UIImage Sprite Additions(iPhone源代码)

     不需要cocos2d,仅基于UIImage,实现类似cocos2d的精灵类(CCSprite),用于播放帧动画。帧动画的图片可以来自一张精灵图片(sprite sheet,texture atlas),类似cocos2d的CCSprite类。 小编注:在iOS 7中已经支持...

Global site tag (gtag.js) - Google Analytics