cocos2dx 给精灵实现一个触摸事件方法:
让精灵类继承CCsprite和CCTargetedTouchDelegate两个类,然后实现CCTargetedTouchDelegate的几个虚函数如下:
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);
// optional
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);
virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);
给精灵增加触摸事件的方式:
1.在精灵类初始化的时候调用
2.在进入场景的时候调用,如果在进入场景的时候调用,则需要精灵类需要实现两外的两个方法
virtual void onEnter();//进入时注册
virtual void onExit();//出场景时删除
注册方法:
void SelfCard::onEnter()
{
CCLog("sprite enter scene");
CCSprite::onEnter();
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-127,true);
//这一步是关键
}
现在问题来了 通过以上方法加入到触摸事件的时候,不知道是不是全局的触摸事件,只要触摸然后精灵类就有会有反应,按我的理解就是我在精灵类上注册了触摸事件,那我触摸这个精灵的时候,才会有触摸相应的,但是实际中不是,所以我的理解就是 CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,-127,true);
这个方法是所有的触摸事件的集合,只要有触摸的事件,就会相应所有被注册的事件,所以在每个触摸的事件里面自己要单独处理有没有被触摸到:
/*触摸开始*/
bool SelfCard::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent){
CCPoint point=pTouch->getLocation();
if(!isTouch(point))
return false;
CCSprite *prite = CCSprite::create("dong.png");
prite->setPosition(ccp(this->getPositionX(),this->getPositionY()+50));
this->getParent()->addChild(prite,0,1001);
this->setVisible(false);
return true;
}
/*判断是否被触摸到*/
bool SelfCard::isTouch(CCPoint point)
{
CCPoint nodePoint=this->convertToNodeSpace(point);
CCSize size=this->getContentSize();
if(nodePoint.x>size.width ||nodePoint.x<0 ||nodePoint.y>size.height ||nodePoint.y<0 )
return false;
return true;
}
相关推荐
在lua中用cocos2d-x重写触摸事件,让精灵,label,都能单独接收触摸事件
在Cocos2d中,我们通常通过实现`ccTouchBegan`, `ccTouchMoved`, `ccTouchEnded`等触摸事件回调函数来定义对触摸事件的处理逻辑。 触摸事件处理机制是Cocos2d中用户交互的关键部分。每个触摸事件会有一个触摸对象,...
本教程将详细介绍如何在Cocos2d-x中为精灵实现触摸事件。 首先,我们需要了解Cocos2d-x的事件系统。Cocos2d-x使用了一个基于观察者模式的事件模型,包括触摸事件、键盘事件、加速器事件等。触摸事件主要分为三种...
cocos2d-x不仅适用于游戏开发,还可以用于创建教育软件、互动媒体和其他2D图形应用,其强大的场景管理、精灵(Sprite)系统和粒子效果等功能,使得开发者能够快速构建各种复杂的2D场景。 总的来说,cocos2d-x 2.2.2...
自定义精灵可以扩展Cocos2d-x的标准精灵功能,使其具备特定的行为或交互方式,例如处理触摸事件。本教程将通过一个简单的例子,基于cocos2dx-2.1.5版本,探讨如何创建一个自定义的可接受并处理触摸信息的精灵类。 ...
在Cocos2d-x 中,触摸事件通常通过`cc::EventDispatcher` 和 `cc::EventListener` 来管理。`TempTouchSprite` 可能会实现一个内部的事件监听器,用于监听触摸开始、触摸移动以及触摸结束等事件。例如,它可能会注册...
同时,Cocos2d-JS的事件系统使得响应用户输入和游戏事件变得简单,如触摸事件、键盘事件等,这对于游戏的交互设计至关重要。 在Cocos2d-JS中,动画是游戏生动性的关键。通过序列帧动画(SpriteSheet)和动作组合,...
结合键盘事件或触摸事件,可以实现人物在四个方向上的行走。 2. 帧动画:为了模拟行走的动作,我们需要一组连续的图片(帧),形成行走动画序列。cocos2d-x 3.0中的cc::Animate类可以轻松管理这些帧,通过`...
2. **图形与动画**:讲解如何使用Cocos2d-x的绘图API绘制2D图形,实现精灵(Sprite)、动画(Animation)和粒子系统(Particle System)。 3. **物理引擎**:介绍Cocos2d-x内置的Box2D物理引擎,用于模拟游戏中的...
接着,书中会讲解Cocos2d-x的事件处理机制,包括触摸事件、键盘事件等,这些都是游戏交互必不可少的部分。同时,还会涉及动画和物理引擎的使用,如动作(Action)、序列(Sequence)、组(Group)以及Box2D物理引擎...
5. **事件处理**:Cocos2d-x提供了事件处理机制,包括触摸事件、键盘事件、网络事件等,使得游戏能够响应用户的输入。 6. **声音与音乐**:Cocos2d-x支持音频播放,包括背景音乐和音效,可以实现音效的同步和控制。...
同时,别忘了Cocos2d支持事件处理,如触摸事件和键盘事件,这使得游戏的用户交互变得更加灵活。 总之,"cocos2d-android jar包全套.zip"提供的是一整套Cocos2d-x在Android平台上的开发环境,包含了游戏开发所需的...
Cocos2d-lua提供了丰富的API,包括场景管理、精灵动画、物理引擎、粒子系统、触摸事件处理等,使开发者能够快速构建游戏场景和交互逻辑。 二、核心编程概念 1. 场景(Scene):在Cocos2d-lua中,每个游戏状态或屏幕...
5. **事件处理**:掌握事件监听和响应机制,包括触摸事件、键盘事件以及自定义事件的处理,实现用户交互。 6. **游戏逻辑**:学习如何组织游戏逻辑,包括状态管理、游戏循环、时间管理和AI设计。 7. **资源管理**...
Cocos2d基于Objective-C,提供了一个强大的游戏开发环境,包括场景管理、精灵(Sprites)、动作(Actions)、层(Layers)、粒子系统(Particle Systems)以及触摸事件处理等核心功能。随着Swift的普及,Cocos2d也有...
3. 触摸事件处理:跑酷游戏通常需要响应玩家的触摸操作,如滑动屏幕控制角色移动,cocos2d-x提供了触摸事件监听机制。 4. 物理引擎:Box2D物理引擎用于模拟角色与障碍物的碰撞,实现真实感的运动效果。 5. 游戏逻辑...
接着,书中会详细讲解Cocos2d-x 3.x的图形绘制,包括精灵(Sprite)、批处理(Batch Node)、纹理 atlases和图集管理。开发者可以学会如何高效地绘制2D图形,利用纹理atlases优化内存使用,并通过批处理技术提升渲染...
6. **事件处理**:提供触摸、键盘、摇杆等多种输入事件的处理机制,使开发者能快速响应用户操作。 7. **物理引擎**:集成Box2D物理引擎,可以轻松实现物理模拟,如碰撞检测和刚体动力学。 8. **Audio支持**:支持...
cocos2d 提供了一个基于消息的事件处理系统,开发者可以通过监听触摸事件、定时器事件来实现游戏逻辑。例如,你可以通过触摸事件控制角色移动,通过定时器更新游戏状态。 五、物理引擎与粒子系统 cocos2d 内置了Box...
3. **渲染引擎**:Cocos2d-x 3.1包含了强大的2D渲染引擎,能够处理精灵(Sprites)、纹理(Textures)、动画(Animations)、粒子系统(Particle Systems)等图形元素。 4. **场景管理**:使用Scene类来管理游戏的...