COCOS2D-X之精灵移动到所点击的位置Demo

这个Demo的效果就是当在电脑上用鼠标或在手机上不断用用手指点击屏幕的时候,对应的精灵会移动到最近一个点击的位置.

一、首先我们在初始化的时候添加好要移动的精灵和开启触屏响应.开启触屏响应只要调用一个函数既可:

setTouchEnabled(true);//CCLayer默认是不响应触屏事件的
我们可以简单看下这个函数的实现如下:

void CCLayer::setTouchEnabled(bool bEnabled)
{
 if (m_bTouchEnabled != bEnabled)
 {
  m_bTouchEnabled = bEnabled;
  if (m_bRunning)
  {
   if (bEnabled)//如果响应触屏事件则进行注册
   {
    this->registerWithTouchDispatcher();
   }
   else
   {
    CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
   }
  }
 }
}
二、我们重写CCLayer的void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)函数如下:

void MainLayer::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)
{
 CCSetIterator it= pTouches->begin();         //获取最近的一个点击的对象
 CCTouch* pTouch = (CCTouch*)(*it);
 CCPoint ptLocation= pTouch->getLocation();   //获得点击的坐标值
 CCNode* pSprNode = getChildByTag(kTagSprite);//获取要移动的精灵的指针
 if(pSprNode != NULL)
 {
  pSprNode->stopAllActions();//停止之前的所有动作
  pSprNode->runAction(CCMoveTo::create(1,CCPointMake(ptLocation.x, ptLocation.y)));//移动到点击的位置
 }
}

三、补充说明:

①、CCSetIterator是一个迭代器,其定义如下:

typedef std::set<CCObject *>::iterator CCSetIterator;

②、CCSet类的结构如下:

class CCSet : public CCObject
{
public:
 ****************************
private:
 std::set<CCObject *> *m_pSet;
}
PS:因为是基础学习,故不作过多分析.后继会有更多精彩内容,敬请大家关注 害羞

本人郑重声明如下 一、本文来自CSDN博客,本文地址http://t.cn/z86WXvT 二、All Rights Reserved. 任何个人或网站转载本文时不得移除本声明. 三、不得对文章进行修改,除非明确说明.同时欢迎大家评论转载和分享.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值