在游戏中,经常会用到触摸,大部分游戏也是通过触摸控制游戏角色运动的,在Cocos2d-X3.0中使用了新的触摸机制,Cocos2d-X3.0中摒弃了Cocos2d-X2.0中将要触发的事件交给代理(delegate)处理,再通过实现代理里面的ontouchBegan等方法接收事件,最后完成事件的响应,在Cocos2d-X3.0中只需通过创建一个事件监听器-用来实现各种触发后的逻辑,然后添加到事件分发器_eventdispatcher
,所有事件监听器有这个分发器统一管理,即可完成事件响应。
上面的话可能过于抽象,下面通过一个简单的例子来测试Cocos2d-X3.0中触摸
首先创建一个touchScene类,并且在touchScene.h中添加下面的代码
#ifndef __touchScene__#define __touchScene__#include "cocos2d.h"USING_NS_CC;class touchScene : public Layer{public: static Scene* createScene(); virtual bool init(); CREATE_FUNC(touchScene); //开始触摸 bool ontouchBegan(touch* touch,Event *event); //滑动 voID ontouchmoved(touch* touch,Event *event); //结束触摸 voID ontouchended(touch* touch,Event *event); //取消触摸 voID ontouchCancelled(touch* touch,Event* event);};#endif
在touchScene,cpp中添加下面的代码
#include "touch.h"Scene* touchScene::createScene(){ auto scene = Scene::create(); auto layer = touchScene::create(); scene->addChild(layer); return scene;}bool touchScene::init(){ if(!Layer::init()) { return false; } //创建一个事件监听器,OneByOne为单点触摸 auto Listener = EventListenertouchOneByOne::create(); //事件回调函数 Listener->ontouchBegan = CC_CALLBACK_2(touchScene::ontouchBegan,this); Listener->ontouchmoved = CC_CALLBACK_2(touchScene::ontouchmoved,this); Listener->ontouchended = CC_CALLBACK_2(touchScene::ontouchended,this); //添加监听器 _eventdispatcher->addEventListenerWithSceneGraPHPriority(Listener,this); return true;}//开始触摸bool touchScene::ontouchBegan(touch* touch,Event *event){ log("touch began !"); return true;} //滑动voID touchScene::ontouchmoved(touch* touch,Event *event){ log("touch moved !");}//结束触摸voID touchScene::ontouchended(touch* touch,Event *event){ log("touch ended !");}//取消触摸voID touchScene::ontouchCancelled(touch* touch,Event* event){ ontouchended(touch,event);}
测试程序,程序的测试结果如下:
当触摸屏幕时会打印touch began !
当触摸结束后会打印touch ended !
当在屏幕上滑动时会打印touch moved !
以上是内存溢出为你收集整理的Cocos2d-X3.0中使用单点触摸全部内容,希望文章能够帮你解决Cocos2d-X3.0中使用单点触摸所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)