cocos 学习笔记(一) 3.3x实现触摸拖动图片

cocos 学习笔记(一) 3.3x实现触摸拖动图片,第1张

概述在阅读学习《Cocos2D-x权威指南》(http://download.csdn.net/download/weicaijiang/8481765)这本书时,在第六章中有一个实例,实现单点触摸:主角随手指移动。 触摸和移动是移动游戏中很常见的 *** 作,于是从这个实例开始学起。 首先,是在场景初始化中添加如下语句,用以创建被拖动的对象: setTouchEnabled(true); hero

在阅读学习《Cocos2D-x权威指南》(http://download.csdn.net/download/weicaijiang/8481765)这本书时,在第六章中有一个实例,实现单点触摸:主角随手指移动。
触摸和移动是移动游戏中很常见的 *** 作,于是从这个实例开始学起。
首先,是在场景初始化中添加如下语句,用以创建被拖动的对象:

settouchEnabled(true);    hero = CCSprite::create("xxxx.jpg");    hero->setposition(300,300);    addChild(hero,3);

然后是,重写五个函数,分别是cctouchBegan、cctouchmoved、cctouchended、cctouchCancelled以及registerWithtouchdispatcher。
但在实践这一步时遇到了问题:这几个函数不能被重写。通过查看HelloWorldScene类的父类图层类(Layer)时发现,他们都是final的,无法被重写,立时陷入尴尬。
后来查资料得知,我使用的Cocos是3.x版本,而这本书是以2.x版本作为讲解的,两者有一定的差异。
于是针对版本问题,在另一篇博文中找到了相关内容(http://www.jb51.cc/article/p-qpordlvu-qs.html),得知在3.x版本中,不再是通过registerWithtouchdispatcher函数注册侦听事件,而是要创建一个侦听对象进行侦听。
于是步骤发生了一些变化,需要重写的是ontouchBegan、ontouchmoved、ontouchended、ontouchCancelled这四个函数。并需要在init()中添加如下内容:

auto m_touchListener =  EventListenertouchOneByOne::create();    m_touchListener->retain();    m_touchListener->ontouchBegan =  CC_CALLBACK_2(HelloWorld::ontouchBegan,this);    m_touchListener->ontouchmoved =  CC_CALLBACK_2(HelloWorld::ontouchmoved,this);    m_touchListener->ontouchended = CC_CALLBACK_2(HelloWorld::ontouchended,this);    m_touchListener->ontouchCancelled = CC_CALLBACK_2(HelloWorld::ontouchCancelled,this);getEventdispatcher()->addEventListenerWithSceneGraPHPriority(m_touchListener,this);

这几段代码代替了2.x版本中的注册,定义回调方法后将侦听和事件分发绑定。
各个回调函数的内容与2.x版本中大同小异,可见原书。但在其中有一点不同:
在点击后,获取点击位置,使用的是touch->getLocation();这个方法,而不是书中的locationInVIEw方法。用这个方法得到的坐标不需要进行坐标转换(与setposition使用的是同一套坐标系)。
效果图:

总结

以上是内存溢出为你收集整理的cocos 学习笔记(一) 3.3x实现触摸拖动图片全部内容,希望文章能够帮你解决cocos 学习笔记(一) 3.3x实现触摸拖动图片所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1083421.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存