首页 > 其他分享 >cocos2dx之多点触屏

cocos2dx之多点触屏

时间:2023-08-25 15:08:13浏览次数:40  
标签:cocos2dx point CCEvent void pEvent label 多点 pTouches 触屏


在多点触屏的实现中,我们用到了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,point,CCEvent,void,pEvent,label,多点,pTouches,触屏
From: https://blog.51cto.com/u_13566975/7230886

相关文章

  • cocos2dx之创建CCControlSlider
    采用CCControlSlider创建,代码如下:CCControlSlider*slider=CCControlSlider::create("extensions/sliderTrack.png","extensions/sliderProgress.png","extensions/sliderThumb.png"); slider->setAnchorPoint(ccp(0.5,1.0f)); slider->......
  • cocos2dx之利用CCSpriteBatchNode创建多个Sprite
    相关技术文档,我们在渲染一个图片的时候经常都是一次渲染一个,如果图片资源很多的话,自然降低了效率,这个时候,我们想,要是能一次渲染完毕,以后要再创建的时候,就不需要再渲染就好了,刚好提供了一个类:CCSpriteBatchNode,一次渲染多个,具体看如下代码:voidMyBathNodeLayer::initLayer(){ CCSi......
  • cocos2dx之CCLayerMultiplex
    刚开始接触这个东西,弄了好久都没有弄好,我自己太笨了,现在我将如何创建一个CCLayerMultiplex过程写出来,代码如下:CCLayer*mainLayer=newMenuDemo;CCLayer*menu1=newMenuDemoItem1;CCLayer*menu2=newMenuDemoItem2;CCLayer*menu3=newMenuDemoItem3;......
  • cocos2dx 之如何创建label 做计分板
    首先创建label:gameScoreLabel=CCLabelTTF::create("0","Arial",30);gameScoreLabel->setColor(ccRED);gameScoreLabel->retain();gameScoreLabel->setPosition(ccp(s.width/6,s.height/6));this->addChild(gameS......
  • cocos2dx之播放音乐
    在游戏时,背景音乐应该说是必不可少的,但是在cocos2dx中如何播放音乐呢,我们看如下代码:CCSize>>如果用stop的话,那么我得再重新playmusic了!关于背景音乐,cocos2dx在不同平台下支持的格式:Android:mp3,wav,3gpIos:mp3,cafWin32:MID,WAV关于音效,cocos2dx在不......
  • 首款HDMI可视化触屏会议控制键盘(控制器)
    派尼珂高清会议触摸控制键盘NK-HDVC507KC概述:派尼珂高清会议摄像机多接口控制键盘NK-HDVC507KC,新一代Android系统网络触控键盘,内置SonyVicsa和Pelco-D/P控制协议,支持RS422/RS485/RS232/IP和网络Onvif、Vicsa协议解码控制,7英寸IPS高清工业液晶电容触摸屏,显示图像及OSD菜单信息,支持......
  • t113-c-多点触摸
    新的数据线到了,可以测试触摸了数据分析经过上次的触摸的设置基本上可以用了,但是得到的是一堆数据,那么怎么看这堆数据呢?标出来的这一部分基本上就是一次报文,主要的是type和code,type0x03表示是abs设备,code要对标头文件:同样的,这篇文章对此解释得到很清楚:https://blog.csdn.net......
  • ipsec 野蛮模式点到多点(分支通过总部进行互相访问)
    需求:总部与二分支之间通过ipsecvpn进行连通,需要实现分支1与分支2通过总部ipsecvpn进行连通(测试需要分支1与分支2同时进行ping去触发感兴趣流)总部配置分解:ACL配置感兴趣流:acladvanced3005(总部与分支1的感兴趣流)rule1permitipsource192.168.30.00.0.0.255destination......
  • 多点液位传感器在扫地机器人的应用
    扫地机器人是现代家庭和办公环境中常见的智能清洁设备,它能够自动清扫地面,提高生活和工作效率。在扫地机器人的设计中,多点液位传感器的应用可以有效地监测水箱的水位,提供更智能的清洁体验。多点液位传感器可以通过多个传感器点来检测水箱的液位高度。在扫地机器人上使用多段液位检测......
  • 基于 Databend 实现的海量日志实时查询服务 | 多点DMALL
    作者:苏琳多点DMALL供应链补货团队负责人多点DMALL成立于2015年。从创立伊始,就致力于以大数据、云计算、AI等数字技术改变零售业,是一站式全渠道数字零售解决方案服务商,数字化解构重构零售产业,提供端到端的商业SaaS解决方案。多点DMALL通过DMALLOS提供零售云一站式......