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上移除、触摸的时候来电话了等。

就可以完成了多点触屏!

相关文章推荐

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

这是关于类的继承关系,CCStandardTouchDelegate用于处理多点触摸;CCTargetedTouchDelegate用于处理单点触摸。 首先在要使用的类的.h文件中注册 ...

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

3.0rc和2.X版本的注册触屏响应时间有点不一样了 //添加一个单点监听 auto listener = EventListenerTouchOneByOne::create(); //监听的...

cocos2dx 屏蔽屏幕触屏向下传递

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

cocos2dx触屏事件详解

版本:2.x 平台iso 先看mian.m文件 //创建一个iso应用 int retVal = UIApplicationMain(argc, argv, nil, @"AppCont...

cocos2dx 触屏事件响应方法

1.Layer接收触屏消息

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

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

cocos2dx触屏响应(单点触摸)CCTouchBegan,CCTouchMove,CCTouchEnd

今天白白跟大家分享一下cocos2dx单点触摸经验。 cocos2dx触摸CCTouch类的单点触摸有四个函数CCTouchBegan,CCTouchMove,CCTouchEnd,CCTouchCa...

cocos2dx-多点触控

转自:http://m.blog.csdn.net/blog/jianpengxuexikaifa_11109/36642423 2014-7-3阅读478 评论0 ...

Quick cocos2dx-Lua(V3.3R1)学习笔记(十三)-----继续触摸事件之多点触摸

在前面,我们提过了单点触摸,下面我们就试一下多点触摸的用法(我用的是cocos code ide进行手机调试,不会的,进入前一篇查看) function MainScene:ctor() ...

cocos2dx 多点触控onTouches侦听细节(15/11/10)

最近在研究cocos2dx的多点触控,发觉网上的资料大部分只局限在侦听器和侦听函数上,对于多点触控touches[]数组的描述比较少,在这个帖子里可以总结一下。 void onTouchesBega...
  • ldkduck
  • ldkduck
  • 2015年11月10日 12:04
  • 269
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:cocos2dx之多点触屏
举报原因:
原因补充:

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