红孩儿Cocos2d-x学习园地教学资料由 [红孩儿游戏编程教学组] 组织编写.版权所有,盗文必究!

如何让一个精灵跟随触点移动

                                              本节主讲:红孩儿
[注:本版使用Cocos2d-x 2.02版本]

如何让一个精灵跟随触点移动?本节我们以HelloCpp为例来讲解一下。

第一步,我们要在场景中创建一个新的精灵。

打开HelloWorldScene.h。我们为HelloWorld增加一个精灵类成员指针,为了方便代码的编写我们可以去掉cocos2d::作用域的定义而在类定义之前加入USING_NS_CC;

#include “cocos2d.h”USING_NS_CC;
class HelloWorld : public CCLayer
{…
private://在这里我们定义一个精灵指针。CCSprite*   m_pSprite;
};

所在的层中开启触屏响应。我们以HelloCpp为例,在HelloWorld的init函数中创建这个精灵。

bool HelloWorld::init()
{…//在底部加入,创建一个精灵,就用Image目录下的笑脸图片来创建精灵吧。m_pSprite = CCSprite::create("Pea.png");// 把精灵放在正中间。m_pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));// 将精灵放在场景中,设Z顺序为1this->addChild(m_pSprite, 1);return true;
}

第二步,我们要启用场景所属层CCLayer响应触点功能。

这一步是超级简单,只需要在创建精灵后加一行代码:

setTouchEnabled(true);

这个函数是CCLayer类开启触屏响应功能的开关。

第三步,为场景所属CCLayer增加相应的响应触点事件处理功能。

CCLayer层本身由CCTouchDelegate派生,CCTouchDelegate是触点消息响应接口类,它指定了CCLayer在响应触点事件时所触发的函数,其中单点触屏主要用于控件,如按钮,而多点触屏多用于场景。

代码分析:

class CC_DLL CCTouchDelegate
{
public://构造CCTouchDelegate() {}//析构virtual ~CCTouchDelegate(){}//单点触屏事件响应//按下
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent); return false;};
//移动
virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent);}
//停止移动virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent);}//离开virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent);}//多点触屏事件响应,事件与上面一致。virtual void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouches); CC_UNUSED_PARAM(pEvent);}virtual void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouches); CC_UNUSED_PARAM(pEvent);}virtual void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouches); CC_UNUSED_PARAM(pEvent);}virtual void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouches); CC_UNUSED_PARAM(pEvent);}};

看一下这些接口,如果我们需要增加相应的触屏事件处理,只需要在CCLayer的派生类中重载这些接口函数就OK了。

回到我们的HelloWorld场景,本节只需要用到移动跟随触屏位置,所以我们在其public部分增加函数重载:

virtualvoid ccTouchesMoved(CCSet*pTouches, CCEvent *pEvent);

并在Cpp中实现它:

void HelloWorld::ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)
{//获取触点指针容器中第一个元素CCSetIterator it = pTouches->begin();//将其转化为触点信息CCTouch* touch = (CCTouch*)(*it);//取得触点位置CCPoint touchLocation = touch->getLocation();  //设置精灵位置为触点位置。m_pSprite->setPosition(touchLocation);
}

运行一下,我们可以在按下鼠标时发现精灵始终跟随鼠标移动。

课后总结:

简单来说,本节就是三个步骤1,创建精灵,2开启触屏,3响应处理。其中关键是第3步重载场景所属的CCLayer中触屏响应事件函数。

红孩儿游戏编程教学组:致力于游戏编程方面的教程编写,目前主要工作重心在Cocos2d-x方向,希望大家支持!

目前成员有:

红孩儿: 九年游戏程序开发经验,参与过多款游戏的开发并任职主程序。

Jivin: 在编程路上,以初学者身份慢慢爬行着。博客:http://blog.csdn.net/laijingyao881201

Jovi: 一年多的端游程序开发经验,初步接触cocos2dx引擎。正在开发一款引擎是cocos2dx的手游。

畏天命: 资深游戏策划,项目经理。参与设计多款iOS游戏是教程组内唯一的业余程序员

一年前开始接触C++及cocos2d-x

将讲解涉及cocos2d-x学习中容易遇到的初级问题,

适合零起点选手入门,博客: http://blog.csdn.net/jyzgo

奶哥:4年手机游戏客户端程序经验,目前担任成都一家游戏公司跨平台项目负责人兼技术总监职位,丰富的手机平台游戏制作经验,包括j2me,android,ios平台

博客:http://8287044.blog.51cto.com/

同时也欢迎有精力有能力的朋友参与我们。

Cocos2d-x 2.0 百例精讲:如何让一个精灵跟随触点移动相关推荐

  1. C语言趣味程序设计编程百例精解

    C/C++语言经典.实用.趣味程序设计编程百例精解(1)  1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组 ...

  2. C语言趣味程序百例精解

    1.绘制余弦曲线 在屏幕上用"*"显示0~360度的余弦函数cos(x)曲线 *问题分析与算法设计 如果在程序中使用数组,这个问题十分简单.但若规定不能使用数组,问题就变得不容易了 ...

  3. C语言编程验证卡布列克,C语言生趣程序百例精解之JAVA实现(83):卡布列克常数...

    C语言趣味程序百例精解之JAVA实现(83):卡布列克常数 C语言趣味程序百例精解之JAVA实现: public class Test83{ public static void main(Strin ...

  4. C/C++语言经典、实用、趣味程序设计编程百例精解(3)

    位反序数 设N是一个四位数,它的9倍恰好是其反序数,求N.反序数就是将整数的数字倒过来形成的整数.例如:1234的反序数是4321. *问题分析与算法设计 可设整数N的千.百.十.个位为i.j.k.l ...

  5. 3个5相乘列乘法算式_新人教版四年级数学上册4.2因数中间或末尾有0的乘法精讲...

    电子课本 图文讲解 同步练习 参考答案 导学案 教学设计 教学内容 三位数乘两位数(因数的中间或末尾有0).(教材第48~50页) 教学目标 1.使学生进一步认识"0"在乘法运算中 ...

  6. C/C++语言经典、实用、趣味程序设计编程百例精解(2)

    11.打鱼还是晒网  中国有句俗语叫"三天打鱼两天晒网".某人从1990年1月1日起开始"三天打鱼两天晒网",问这个人在以后的某一天中是"打鱼&quo ...

  7. C/C++趣味程序设计百例(11~20)

    C/C++语言经典.实用.趣味程序设计编程百例精解(2)  11.打鱼还是晒网  中国有句俗语叫"三天打鱼两天晒网".某人从1990年1月1日起开始"三天打鱼两天晒网&q ...

  8. 第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲—深度优先与广度优先原理...

    第三百三十八节,Python分布式爬虫打造搜索引擎Scrapy精讲-深度优先与广度优先原理 网站树形结构 深度优先 是从左到右深度进行爬取的,以深度为准则从左到右的执行(递归方式实现)Scrapy默认 ...

  9. 第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲—elasticsearch(搜索引擎)基本的索引和文档CRUD操作、增、删、改、查...

    第三百六十二节,Python分布式爬虫打造搜索引擎Scrapy精讲-elasticsearch(搜索引擎)基本的索引和文档CRUD操作.增.删.改.查 elasticsearch(搜索引擎)基本的索引 ...

最新文章

  1. Windows 8 图标前面的勾选
  2. 原创 | 吐血推荐,B站最强学习资源汇总(数据科学,机器学习,python)
  3. uptime命令分析负载
  4. 权限管理,pymysql模块
  5. springboot @PropertySource+@Value注入properties配置文件属性值
  6. php json和数组,php数组和json数组之间的互相转化
  7. 【Tiny4412】搭建Qt网络文件系统
  8. 产品经理经验谈100篇(三)-如何才能打造出一款好的SaaS产品?
  9. MTK 驱动(72)---mtk Android如何调试recovery模块
  10. linux shell 命令记录,linux常用shell命令记录
  11. win10 dcom服务器进程占用cpu,WIN10CPU百分百,Windows10 DCOM占用过高解决办法 | 帮助信息-动天数据...
  12. 小程序input获得焦点触发_小程序学习(三)
  13. Week 10 homework
  14. ps编辑工具:渐隐/合并拷贝
  15. 应用分发平台之苹果超级签名流程分析及API错误
  16. 【调剂】中科院天津工业生物技术所与天津科技大学联合培养硕士招生2023
  17. VMware XP安装安装程序没有找到硬盘驱动器
  18. 计算机网络学习——王道教材书(持续更新)
  19. YOLO V2得到的启发
  20. getPhoneNumber:fail no permission

热门文章

  1. 时间序列分析教程(一):基本性质
  2. OpenCV开发笔记(六十九):红胖子8分钟带你使用传统方法识别已知物体(图文并茂+浅显易懂+程序源码)
  3. 一起来玩U3D之基础物理引擎
  4. sdn 深信服_推动物联网安全行业发展,青莲云受邀出席2019深信服创新大会
  5. Fabric链码常用API文档
  6. chrome 查看日志
  7. java热词_生成热词
  8. 小学生学计算机图片大全集,小学生电脑绘画作品欣赏
  9. 匈牙利算法(月老牵线问题)
  10. ui sketch_如何在Sketch中设计汽车应用程序设计UI