cocos2dx之多点触屏

原创 2013年12月03日 14:08:11

在多点触屏的实现中,我们用到了CCLayer中的:

    void ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent);
    void ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent);
    void ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent);
    void ccTouchesCancelled(CCSet *pTouches, CCEvent *pEvent);


在初始化该Layer的时候,记得添加如下代码:

this->setTouchEnabled(true);
void MenuDemo::onEnter() {
    CCLayer::onEnter();
}

上面的onEnter也是关键处,如果不添加的话,就不会在layer收到点击消息!


然后分别实现,这几个方法即可!

void MenuDemo::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent) {
    CCTouch *touch = dynamic_cast<CCTouch *>(pTouches->anyObject()); //一定要添加这行代码,不然就无法正确获取到你鼠标点击的位置。
    CCPoint point = touch->locationInView();
    CCPoint GLPoint = CCDirector::sharedDirector()->convertToGL(point);//转化成你的view坐标

    CCLabelTTF *label = CCLabelTTF::create("abc", "Arial", 24);
    label->setColor(ccc3(255, 100, 0));
    label->setPosition(CCPointMake(GLPoint.x  , GLPoint.y));
    this->addChild(label, 4);
    CCLOG("label->x: %f, label->y: %f", label->getPositionX(), label->getPositionY());
    CCLOG("ccTouchBegan\n");
}


还有就是采用addTargetedDelegate来实现,在初始化layer的时候,初始化:

CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);

实现ccTouchBegan:

bool GameDemoManager::ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent) { 
	CCPoint	point = pTouch->getLocation();
	//CCPoint GLpoint = CCDirector::sharedDirector()->convertToGL(point);
	CCLabelTTF *label = CCLabelTTF::create("www", "Arial", 32);
	label->setColor(ccc3(255,0 ,0));
	label->setPosition(ccp(point.x, point.y));
	this->addChild(label, 1);
	return true;
}

ccTouchesCancelled和ccTouchCancelled函数很少用,在接到系统中断通知,需要取消触摸事件的时候才会调用此方法。如:应用长时间无响应、当前view从window上移除、触摸的时候来电话了等。

就可以完成了多点触屏!

cocos2dx-多点触控

声  明        本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时...
  • jianpengxuexikaifa
  • jianpengxuexikaifa
  • 2014年07月03日 12:20
  • 5468

Cocos2d-x实例:单点触摸事件

为了让大家掌握Cocos2d-x中的事件机制,下面我们以触摸事件为例,使用事件触发器实现单点触摸事件。该实例如图8-3所示,场景中有三个方块精灵,显示顺序如图8-3所示,拖拽它们可以移动它们,事件响应...
  • tonny_guan
  • tonny_guan
  • 2014年07月24日 20:37
  • 9145

Cocos2dx 3.0rc之单点触屏响应 和 多点触屏响应

3.0rc和2.X版本的注册触屏响应时间有点不一样了 //添加一个单点监听 auto listener = EventListenerTouchOneByOne::create(); //监听的...
  • yangxuan0261
  • yangxuan0261
  • 2014年03月20日 17:12
  • 1124

cocos2dx2.2.4-多点触屏和单点触屏事件

这是关于类的继承关系,CCStandardTouchDelegate用于处理多点触摸;CCTargetedTouchDelegate用于处理单点触摸。 首先在要使用的类的.h文件中注册 ...
  • sg619262284
  • sg619262284
  • 2014年02月21日 14:40
  • 761

cocos2dx触屏事件详解

版本:2.x 平台iso 先看mian.m文件 //创建一个iso应用 int retVal = UIApplicationMain(argc, argv, nil, @"AppCont...
  • zky1347888
  • zky1347888
  • 2015年01月04日 14:51
  • 1102

cocos2dx 屏蔽屏幕触屏向下传递

初学cocos2dx还是遇到了不少问题,下面记下来,方便以后遇到同样的问题可以快速解决。以后有新的认识再继续补充。 如何实现屏蔽屏幕触屏向下传递,我认为需要 重写virtual void regist...
  • u011922261
  • u011922261
  • 2014年03月02日 20:53
  • 1652

cocos2dx 触屏事件响应方法

1.Layer接收触屏消息
  • u012379889
  • u012379889
  • 2014年05月15日 20:51
  • 743

和屌丝一起学cocos2dx-触屏事件

声  明        本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时附带本声明...
  • wanyanjiabin
  • wanyanjiabin
  • 2013年08月25日 07:55
  • 2484

使用quick-cocos2dx-lua 实现的小游戏(包含碰撞检测,触屏发子弹)

使用quick-cocos2dx-lua 实现的小游戏(包含碰撞检测,触屏发子弹)
  • In_Zihuatanejo
  • In_Zihuatanejo
  • 2015年10月28日 13:46
  • 1005

cocos2dx-触屏事件

声  明        本教程仅用于初学cocos2dx同学使用,内容由本人(孤狼)学习过程中笔记编写,本教程使用cocos2dx版本为2.1.4。本教程内容可以自由转载,但必须同时...
  • jianpengxuexikaifa
  • jianpengxuexikaifa
  • 2014年07月03日 12:19
  • 2251
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2dx之多点触屏
举报原因:
原因补充:

(最多只允许输入30个字)