【Cocos2d-x 3.0学习笔记】触摸
2013-11-21 10:58
393 查看
//触屏事件 virtual bool ccTouchBegan(Touch * touch,Event * event); virtual void ccTouchMoved(Touch * touch,Event * event); virtual void ccTouchEnded(Touch * touch,Event * event); //生命周期 virtual void onEnter(); virtual void onExit(); void Touchdemo::onEnter() { //开启触屏监听 Director::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this,0,false); Layer::onEnter();//一定不要忘了 } void Touchdemo::onExit() { //关闭触屏监听 Director::sharedDirector()->getTouchDispatcher()->removeDelegate(this); Layer::onExit();//一定不要忘了 } =========================================================================================== 添加委托 addStandardDelegate(); 开启多点触控(不写没有效果哦) setTouchEnabled(); 触屏事件: 1.注册多点触控 virtual void registerWithTouchDispatcher(void); 2.当用户第一次触碰手机屏幕时响应的回调函数 virtual void ccTouchesBegan(Set * touchs,Event * event); 3.当用户手指在手机屏幕上滑动时响应的回调函数 virtual void ccTouchesMoved(Set * touchs,Event * event); 4.当用户手指在离开手机屏幕上时响应的回调函数 virtual void ccTouchesEnded(Set * touchs,Event * event); //写上多点触控的回调函数 virtual void registerWithTouchDispatcher(void); virtual void ccTouchesBegan(Set * set,Event * e); virtual void ccTouchesMoved(Set * set,Event * e); virtual void ccTouchesEnded(Set * set,Event * e); //写上生命周期函数 virtual void onEnter(); virtual void onExit(); 注册监听 void Touchsdemo::registerWithTouchDispatcher(void) { //注册监听 Director::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this,0); } void Touchsdemo::ccTouchesBegan(Set * set,Event * e) { SetIterator iter=set->begin(); //这里的iter相当于系统分配的数字, //set->begin()获取第一个数字 //set->end()就是最后一位 for(;iter!=set->end();iter++){ //这里呢,就是单点处理了,可以理解为把多点拆成单点来做 CTouch * mytouch=(Touch *)(* iter); Point cp=mytouch->getLocation(); //这里我们对5个触摸块进行处理 if(mytouch->getID()==0){ Sprite * sp=(Sprite * )this->getChildByTag(1); sp->setPosition(cp); } if(mytouch->getID()==1){ Sprite * sp=(Sprite * )this->getChildByTag(2); sp->setPosition(cp); } if(mytouch->getID()==2){ Sprite * sp=(Sprite * )this->getChildByTag(3); sp->setPosition(cp); } if(mytouch->getID()==3){ Sprite * sp=(CCSprite * )this->getChildByTag(4); sp->setPosition(cp); } if(mytouch->getID()==4){ Sprite * sp=(Sprite * )this->getChildByTag(5); sp->setPosition(cp); } } } void Touchsdemo::ccTouchesEnded(Set * set,CCEvent * e) { CCSetIterator iter=set->begin(); int a[6]={0,0,0,0,0,0};//创建一个数组 for(;iter!=set->end();iter++){ Touch * mytouch=(Touch *)(* iter); Point cp=mytouch->getLocation(); //这里我们对5个触摸块进行处理 if(mytouch->getID()==0){ a[1]=1; } if(mytouch->getID()==1){ a[2]=1; } if(mytouch->getID()==2){ a[3]=1; } if(mytouch->getID()==3){ a[4]=1; } if(mytouch->getID()==4){ a[5]=1; } } for(int i=1;i<=5;i++){<> if(a[i]==1){ Sprite * sp=(Sprite *)this->getChildByTag(i); sp->runAction(MoveTo::create(5,ccp(30,30))); } } } //实现生命周期函数 void Touchsdemo::onEnter() { Layer::onEnter(); } void Touchsdemo::onExit() { Director::sharedDirector()->getTouchDispatcher()->removeDelegate(this); Layer::onExit(); }
相关文章推荐
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第二步---编辑器(1)--触摸添加点
- 【Cocos2d-x 3.0学习笔记】触摸
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第二步---编辑器(1)--触摸加入点
- cocos2d-x-3.0学习笔记之如何搭建安卓开发环境
- 【Cocos2d-x 3.0学习笔记】动作,动画
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第四步--地图循环&主角加入动作
- cocos2d-x-3.0学习笔记之标签类
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检測(1)
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第三步---主角开跑&同时带着刚体
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第一步--- 开始界面
- 【Cocos2d-x 3.0学习笔记】coco2d-s 读取plist 文件报错
- cocos2d-x 2.X demo学习笔记 6 ----ClickAndMoveTest 触摸事件和移动
- cocos2d-x 2.X demo学习笔记 9 ----Touches 触摸事件 以及碰撞检测
- cocos2d-x-3.0学习笔记之用户事件机制
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第五步---着手打造游戏界面
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第八部---怪物出场
- cocos2d-x 3.0游戏实例学习笔记《卡牌塔防》第六步---炮台&点击炮台加入英雄&英雄升级
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第五步--按钮控制主角Jump&Crouch
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》 第六步--金币&岩石添加并且管理
- Cocos2d3.0学习笔记-Action复杂动作