`
jackymin
  • 浏览: 73548 次
  • 性别: Icon_minigender_1
  • 来自: 哈尔滨
社区版块
存档分类
最新评论

cocos2d-x 精灵监听点击事件

阅读更多

1、cocos2d-x的基本运行环境搭建就不介绍了,自己去网上搜索

2、本贴发表精灵监听点击事件的示例

创建精灵后,要响应自定义点击事件,最好是把监听事件加在精灵上,在层上监听也可以满足要求,不过得遍历当前层上的所有精灵,根据精灵的位置判断是不是点击的精灵。下面看代码

A  接口说明

#include "cocos2d.h"

#include "PicLayer.h"

#include <iostream>

 

usingnamespacecocos2d;

class SpriteClassModel : publiccocos2d::CCSprite ,publicCCTouchDelegate

{

    public :static SpriteClassModel*  create(const char *pszFileName);

    CCRect getRect();

    private :int spriteState =0;

    private : PicLayer* piclayer;

    private : int randomNum =0;

    public : virtual void setRandomNum(int randomNum);

    public : virtual void setCurrentLayer(PicLayer *layer);

    

    virtual void  playLeafAnim(CCSprite *spriteLeaf);

    

    //virtual void create();

    //添加触屏委托,重新此方法

    virtual void onEnter();

    //移除监听事件,防止内存溢出

    virtual void   onExit()

    virtual void endRotate();

    

    //触屏响应重写这三个方法

    virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);//按下

    virtual void ccTouchMoved(CCTouch* touch, CCEvent* event);//拖动

    virtual void ccTouchEnded(CCTouch* touch, CCEvent* event);//松开

};

 

这是我自定义的精灵类,需要参看几个方法:

第一,加载精灵时,会自动调用此方法,需要注册监听,在实现方法里注册

    //添加触屏委托,重新此方法

    virtual void onEnter();

第二,响应事件,重写以下方法,一般在began中根据点击位置判断是否是当前的精灵

//触屏响应重写这三个方法

    virtual bool ccTouchBegan(CCTouch* touch, CCEvent* event);//按下

    virtual void ccTouchMoved(CCTouch* touch, CCEvent* event);//拖动

    virtual void ccTouchEnded(CCTouch* touch, CCEvent* event);//松开

注意,此接口继承了CCSprite,用来声明自己的精灵类,继承了CCTouchDelegate用来注册实现监听委托,同时,自定义精灵还需要声明自己的create方法 public :static SpriteClassModel*  create(const char *pszFileName);这样才能实例化自己的精灵类,接口说明到这里

B实现类

 

 实现类中主要是实现了接口中定义的方法,重点看create方法和监听实现方法

using namespace cocos2d;

using namespace std;

 

//创建精灵的类,用来声明自己的精灵对象,加入层中显示

 SpriteClassModel* SpriteClassModel::create(const char *pszFileName)

{

    SpriteClassModel *pobSprite = new SpriteClassModel();

    if (pobSprite && pobSprite->initWithFile(pszFileName))

    {

        pobSprite->autorelease();

        return pobSprite;

    }

    CC_SAFE_DELETE(pobSprite);

    return NULL;

}

 //系统自动调用,注册监听委托

void SpriteClassModel::onEnter()

{

    CCDirector* pDirector = CCDirector::sharedDirector();

    //添加一个触摸委托给dispatcher的列表,委托对象this,

    pDirector->getTouchDispatcher()->addTargetedDelegate(this, 0, false);

    CCSprite::onEnter();

}

//获取精灵的位置

CCRect  SpriteClassModel::getRect()

{

return CCRectMake(getPositionX() - getContentSize().width * getAnchorPoint().x,

                      getPositionY() - getContentSize().height * getAnchorPoint().y,

                      getContentSize().width, getContentSize().height);

// 为了能够自定义自己的位置大小采用了低效的函数而不是直接用成员变量

}

 

void SpriteClassModel::ccTouchEnded(CCTouch* pTouch, CCEvent* event)

{

   }

 

//点击事件,开始点击,判断点击坐标是在精灵的区域内

bool SpriteClassModel::ccTouchBegan(CCTouch* touch, CCEvent* event)

{

 

    CCPoint touchLocation = touch->getLocation(); // 返回GL坐标

    CCPoint localPos = convertToNodeSpace(touchLocation);

    CCRect rc = getRect();

    rc.origin = CCPointZero;

    bool isTouched = rc.containsPoint(localPos);

    if(isTouched)

    {

        printf("我被点中了!\n");

         

            return true;

 

        }else{

            return false;

        }

    }else{

        printf("没有点中");

        return false;

    }

 

}

 voidSpriteClassModel::onExit()

{
    //移除监听
    CCTouchDispatcher::sharedDispatcher()->removeDelegate(this);
    CCSprite::onExit();
}

void SpriteClassModel::ccTouchMoved(CCTouch* touch, CCEvent* event)

{

    

}

分享到:
评论

相关推荐

    cocos2d-x 动画工具 Flash2Cocos2d-x 1.3

    同时,该工具还支持自定义事件映射,使Flash中的事件监听器能够正确地触发cocos2d-x中的相应函数,确保游戏交互的一致性。 在压缩包文件"jyinkailej-Flash2Cocos2d-x-8c0deff"中,可能包含了Flash2Cocos2d-x工具的...

    Cocos2d-x实战 JS卷

    1. **Cocos2d-x架构**:理解Cocos2d-x的组件系统,包括Scene(场景)、Layer(层)、Sprite(精灵)、Node(节点)等,以及它们在游戏中的作用和交互方式。 2. **JavaScript绑定**:Cocos2d-x如何将C++底层库与...

    cocos2d-x 跑酷源码

    3. 触摸事件处理:跑酷游戏通常需要响应玩家的触摸操作,如滑动屏幕控制角色移动,cocos2d-x提供了触摸事件监听机制。 4. 物理引擎:Box2D物理引擎用于模拟角色与障碍物的碰撞,实现真实感的运动效果。 5. 游戏逻辑...

    cocos2d-x 案例开发大全 第二章(源码)

    8. **事件处理(Event Handling)**:cocos2d-x的事件模型允许开发者监听和响应用户的触摸、键盘等输入事件,以及游戏内部的事件,如节点的添加或删除。 9. **纹理(Texture)**:cocos2d-x使用Texture Atlas管理纹理,...

    cocos2d-x游戏源码 三国策略游戏源码

    【cocos2d-x游戏引擎概述】 cocos2d-x是一个开源的游戏开发框架,它基于cocos2d-x,用于创建2D游戏、演示程序和其他图形/交互式应用程序。cocos2d-x是用C++编写的,但同时也支持Lua和JavaScript作为脚本语言,使得...

    《Cocos2d-x实战 Lua卷》源码.7z

    1. **Cocos2d-x架构**:了解Cocos2d-x的核心组件,如场景(Scene)、层(Layer)、精灵(Sprite)、动作(Action)等,以及如何用Lua来控制这些元素。 2. **Lua与C++交互**:Cocos2d-x支持Lua作为脚本语言,源码会展示如何...

    cocos2d-x 3.x游戏开发实战光盘

    通过学习和实践这个光盘中的内容,开发者可以掌握cocos2d-x 3.x的核心概念,如场景管理、精灵动画、粒子系统、触摸事件处理、游戏逻辑设计等,从而能够独立地开发出高质量的2D游戏。对于希望提升游戏开发技能或转行...

    cocos2d-x的spine动画demo

    5. **交互与事件处理**:在Cocos2d-x中,你还可以监听Spine动画的事件,比如动画结束或特定帧到达时,进行相应的游戏逻辑处理。 这个分享的"Cocos2d-x的spine动画demo"很可能就是一个完整的实例,包含了创建、加载...

    迷失航线-Cocos2d-x项目实战-射击类游戏-关东升

    Cocos2d-x提供了强大的精灵系统,支持动画序列和帧动画。在《迷失航线》中,开发者需要创建精灵,设置其动作,以及处理碰撞检测。此外,精灵的组合可以形成复杂的游戏对象,如玩家飞机、敌方舰队和子弹。 射击游戏...

    cocos2d-x教程

    cocos2d-x支持触摸、键盘、摇杆等多种输入设备的事件处理。开发者可以注册事件监听器,响应用户的交互操作,实现游戏逻辑。 七、物理引擎 集成Box2D物理引擎,cocos2d-x可以方便地实现物体碰撞检测和物理运动模拟,...

    Cocos2d-x demo程序

    5. **事件与触摸响应**:Cocos2d-x 支持事件监听,可以处理用户的触摸、键盘输入等。Demo可能展示了如何注册事件监听器以及处理触摸事件的方法。 6. **声音与音乐播放**:Cocos2d-x 提供了简单的音频API,可以播放...

    贪吃蛇cocos2d-x

    Cocos2d-x提供了一个事件系统,你可以注册监听器来响应特定事件,比如触摸事件、键盘事件,以及自定义的游戏事件。 5. **物理引擎(Box2D)**:虽然贪吃蛇游戏的物理效果相对简单,但Cocos2d-x集成了Box2D物理引擎...

    cocos2d-x中国象棋

    Cocos2d-x提供了事件监听器和触摸处理机制,使得开发者能够轻松响应用户输入。 3. **棋盘和棋子的渲染**:Cocos2d-x的2D渲染能力用于绘制棋盘和棋子的图像。开发者可能使用纹理(Texture)和精灵(Sprite)类来加载...

    cocos2D-lua 核心编程内置代码

    Cocos2d-lua是一款基于Cocos2d-x引擎的轻量级游戏开发框架,它将强大的C++底层引擎与灵活易用的Lua脚本语言相结合,为游戏开发者提供了一个高效、便捷的游戏开发平台。在“Cocos2d-x之Lua核心编程(第二版)_配套代码...

    Cocos2d-x游戏引擎实战开发炸弹超人

    3. **事件处理**:Cocos2d-x拥有完善的事件监听和处理机制,可以方便地响应触摸、键盘等用户输入,以及游戏内部的各种事件。 4. **脚本支持**:支持Lua和JavaScript两种脚本语言,提供与C++原生代码的交互,降低了...

    cocos2d-x版本的对对碰代码

    Cocos2d-x提供了触摸事件监听器,可以捕获用户的触摸动作,并据此更新游戏状态。 4. **动画效果**:消除图标时,通常会添加一些视觉效果,如淡入淡出、缩放、旋转等。Cocos2d-x的动画系统支持帧动画和动作(Action...

    cocos2d-x--simple-Game.rar_cocos2d_cocos2d-x

    cocos2d-x提供了一套完整的事件处理机制,可以方便地监听和处理各种输入事件。 7. **物理引擎**:对于有物理碰撞检测需求的游戏,cocos2d-x集成了Box2D物理引擎,可以创建真实的物理效果,如重力、碰撞等。 8. **...

    封装的一个 cocos2d-x 接收点击事件的精灵

    在这个场景中,我们关注的是一个特定的自定义精灵(Sprite)类,名为“TempTouchSprite”,它是针对Cocos2d-x 平台封装的,用来处理点击事件。 ### TempTouchSprite 概述 `TempTouchSprite` 是一个对原生Cocos2d-x ...

    基于cocos2d-x的俄罗斯方块游戏源码

    3. **事件处理**:cocos2d-x支持事件监听,如触摸、键盘输入等。在俄罗斯方块游戏中,玩家通过触摸屏幕或按键控制方块的左右移动和旋转,这就需要编写事件处理函数来响应这些操作。 4. **物理引擎**:虽然俄罗斯...

    cocos2d-x-Introduction.zip_cocos2d_cocos2d-x

    cocos2d-x的事件处理系统支持触摸、键盘、鼠标等多种输入设备的事件监听,方便开发者实现用户交互。 八、资源管理 引擎内置了资源管理模块,包括纹理图集、音频、字体等资源的加载、缓存和释放,优化了资源的使用...

Global site tag (gtag.js) - Google Analytics