Cocos2d-x MultipleTouch & CCControllButton'

来源:未知 责任编辑:责任编辑 发表时间:2013-12-18 11:33 点击:
在cocos2dx的程序设计中有时候会遇到需要多点触摸的功能,下面先介绍一下在cocos2dx中多点触摸的一般规则,然后介绍我遇到的一个有关多点触摸的情景的解决方案。 p> 

p>(一)使用多点触摸规则:

p>关于多点触摸在TestCPP中有一个例子展示,通过这个例子就可以知道多点触摸是如何使用的了。

p>简单说一下步骤:

p>①开启多点触摸

p>在ios文件夹中的AppController.mm文件的

p>- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法中:

p>[__glView setMultipleTouchEnabled:true]; 

p> 

p>②注册触摸事件( StandardDelegate )

p>a)可以在onEnter方法中: CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);

p>b)也可以重写: virtual void registerWithTouchDispatcher(void); 在这个方法中:

p>CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);

p>而且注意要在init方法中: setTouchEnabled(true);

p>为什么呢?因为在init方法中,setTouchEnabled(true); 会自动回调 registerWithTouchDispatcher 方法。

p> 

p>③触摸事件委托方法

p>[cpp] 

p>virtual void ccTouchesBegan(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);  

p>    virtual void ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);  

p>    virtual void ccTouchesEnded(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);  

p>    virtual void ccTouchesCancelled(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);  

p> 

p>在每一个委托方法中,可以用下面的遍历方法,获取每一个触摸点的信息。

p>[cpp] 

p>CCSetIterator iter = pTouches->begin();  

p>      

p>    for (; iter != pTouches->end(); iter++)  

p>    {  

p>        CCTouch* pTouch = (CCTouch*)(*iter);  

p>        CCPoint location = pTouch->getLocation();  

p>          

p>    }  

p> 

p> 

p>(二)一个类似多点触摸情景解决方法

p>情景介绍:在layer中,需要按住某一个按键,然后在按键保持按下的时候,执行某一个事件(也是要触摸屏幕执行的),如果松开按键,那么执行这个事件结束。

p>A)那么我的第一个反应就是使用多点触摸,理论上是可以解决的,但是感觉判断起来有点繁琐,所有暂时放弃了这个解决方法。

p>B)我就想到要CCMenu item 或者 CCControllButton 这类的“按键” 实现,当按键 保持按下 的时候,那么就可以判断它的状态(isSelected),在一个定时器方法中判断按键的状态,根据这个状态值,就可以进行相应处理,恩,这样似乎简单了许多。

p> 

p>注意:在这个情景中其实也是多点触摸的,注意到按键按下是一个触摸点,然后在执行某一个事件,也是要触摸屏幕执行,那么又是一个触摸点。那么我们同样要开启多点触摸,这一点很重要。

p>然而,如果我们 在按键按下的时候执行的事件,只是需要一个触摸点,那么注册为 TargetedDelegate 就可以了;如果需要多个触摸点,那么注册为 StandardDelegate。

p> 

p>①首先用到 CCMenuItem

p>在这类按键中 有两个 属性:

p>[cpp]  
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1