settouchEnabled(true);//开启多触点监听//用户手指进行移动或者拖拽voID Game::cctouchesMoved(CCSet *ptouches,CCEvent *pEvent){ CCSetIterator iter = ptouches->begin(); if(plane0IsExist)//多机模式,单机模式不涉及多点触控 { for (;iter !=ptouches->end(); iter++) { //获取两个飞机对象 CCSprite *sp2 =(CCSprite*)this->getChildByTag(tag_player0); CCSprite *sp1 =(CCSprite*)this->getChildByTag(tag_player); CCPointpoint1=sp1->getposition(); CCPointpoint2=sp2->getposition(); CCtouch *ptouch =(CCtouch*)(*iter); CCPoint location =ptouch->getLocation(); //根据触点与两个飞机之间的距离判断触控情况 //首先触点与飞机必须足够近,不然用户并没有触碰到飞机 //触点应该给相对较近的那个飞机 if(ptouch->getID()==0) { if (distance(location,point1)<100.0){ sp1->setposition(location); } else if(distance(location,point2)<100.0) sp2->setposition(location); } else if(ptouch->getID()==1) { if (distance(location,point2)<100.0){ sp2->setposition(location); } else if(distance(location,point1)<100.0) sp1->setposition(location); } } }else{// 单机模式 CCSprite *sp1 =(CCSprite*)this->getChildByTag(tag_player); CCPointpoint1=sp1->getposition(); CCtouch *ptouch =(CCtouch*)(*iter); CCPoint location =ptouch->getLocation(); if (distance(point1,location)<=sp1->getContentSize().wIDth){ sp1->setposition(location); } }}//删除多触点的委托监听voID Game::onExit(){ this->unscheduleUpdate(); this->unscheduleAllSelectors(); CCDirector::sharedDirector()->gettouchdispatcher()->removeDelegate(this); cclayer::onExit();}
工程源码: SpaceWar-GitHub 总结
以上是内存溢出为你收集整理的Cocos2d-x使用iPhone的多点触控实现双机游戏全部内容,希望文章能够帮你解决Cocos2d-x使用iPhone的多点触控实现双机游戏所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)