001移动的精灵_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
001移动的精灵
上传于||文档简介
&&scratch例子
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢13654人阅读
Cocos2d-x学习(94)
红孩儿Cocos2d-x学习园地教学资料由 [红孩儿游戏编程教学组] 组织编写.版权所有,盗文必究!
如何让一个精灵跟随触点移动
& & & & & & & & & & & & & & & & &&& & & & &&本节主讲:红孩儿
[注:本版使用Cocos2d-x 2.02版本]
如何让一个精灵跟随触点移动?本节我们以HelloCpp为例来讲解一下。
第一步,我们要在场景中创建一个新的精灵。
打开HelloWorldScene.h。我们为HelloWorld增加一个精灵类成员指针,为了方便代码的编写我们可以去掉cocos2d::作用域的定义而在类定义之前加入USING_NS_CC;
#include “cocos2d.h”
USING_NS_CC;
class HelloWorld : public CCLayer
//在这里我们定义一个精灵指针。
所在的层中开启触屏响应。我们以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顺序为1
this-&addChild(m_pSprite, 1);
第二步,我们要启用场景所属层CCLayer响应触点功能。
这一步是超级简单,只需要在创建精灵后加一行代码:
setTouchEnabled(true);
&&& 这个函数是CCLayer类开启触屏响应功能的开关。
第三步,为场景所属CCLayer增加相应的响应触点事件处理功能。
&&&&&&&& CCLayer层本身由CCTouchDelegate派生,CCTouchDelegate是触点消息响应接口类,它指定了CCLayer在响应触点事件时所触发的函数,其中单点触屏主要用于控件,如按钮,而多点触屏多用于场景。
代码分析:
class CC_DLL CCTouchDelegate
CCTouchDelegate() {}
virtual ~CCTouchDelegate()
//单点触屏事件响应
virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) {CC_UNUSED_PARAM(pTouch); CC_UNUSED_PARAM(pEvent);};
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学习中容易遇到的初级问题,
适合零起点选手入门,博客:
奶哥:4年手机游戏客户端程序经验,目前担任成都一家游戏公司跨平台项目负责人兼技术总监职位,丰富的手机平台游戏制作经验,包括j2me,android,ios平台
博客:http://8287044./
同时也欢迎有精力有能力的朋友参与我们。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1014170次
积分:11734
积分:11734
排名:第960名
原创:176篇
评论:756条
&&&&95年第一次使用BASIC在学习机上进行超级玛丽游戏编程至今已经过去了18年,期间自学多门编程语言,创建多个游戏编程爱好者网站,03年起进入游戏公司从事游戏程序员职位至今,担任过2D引擎及工具开发,Linux网络服务器开发,3D引擎及工具开发,项目主程,程序总监,CTO等多岗位。目前在创准备中,看好未来移动平台的发展,希望在Cocos2d-x引擎的底层和周边方面做出一些有用的建设性作用。
红孩儿Cocos2d-x学习园地
QQ群2:(已满)
QQ群1:(已满)