今天索性再写一篇了,其实代码已经实现了,只是笔记还没整理,整好了去吃饭了!今天收获还是不小的。
额,前面搞忘了习惯性的加一句:
本文小for原创,转载请注明出处。
正文开始。
拖动(Touch)事件和点击事件的处理我非常相似的,想必看了小for第四篇笔记并且去搜索了其他文章看的童鞋们会发现,小for的文章里只实现了一个方法,而其他文章中却有四个方法。其实小for是都去实现了的,只是没写上去,其实每个方法的使用都是相同的。但是,今天却有学弟看了后觉得还是写全好些,那我就写全吧。^-^
首先,我们同样需要在HelloWorld中声明以下四个函数
virtual void ccTouchesBegan(cocos2d::CCSet *pTouches,cocos2d::CCEvent *pEvent);
virtual void ccTouchesEnded(cocos2d::CCSet *pTouches,cocos2d::CCEvent *pEvent);
virtual void ccTouchesMoved (cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
virtual void ccTouchesCancelled(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent);
然后,在HelloWorld.cpp的init中注册
CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, kCCMenuHandlerPriority);
最后,需要把上述四个方法的函数体写出来,简单记录下。ccTouchesBegan是点下去那一瞬间执行的内容,ccTouchesEnded是手指松开时执行的内容,ccTouchesMoved是滑动过程中执行的内容(这个方法一直在执行,且自动循环的),ccTouchesCancelled取消(代码中有介绍什么情况下算取消)时执行的内容。
这四个函数并一起,实现了点击屏幕上一个地方,图片spriteClick转移到点中的位置,按住不放滑动时该图片跟着鼠标走,鼠标松开后,图片回到原位置。
具体代码如下图,不多解释了,见代码
void HelloWorld::ccTouchesBegan(cocos2d::CCSet *pTouches,cocos2d::CCEvent *pEvent){
//得到点击的点
CCTouch *pTouch = (CCTouch*)(pTouches->anyObject());
CCPoint point=pTouch->locationInView();
//这个点需要处理,上下不对,我的模拟器高度为320
point.y=320-point.y;
//设置锚点为正中
//这里基本可以看出设置锚点的规则了,整体视为(1,1)这么大的
spriteClick->setAnchorPoint(ccp(0.5,0.5));
spriteClick->setPosition(point);
}
void HelloWorld:: ccTouchesEnded(cocos2d::CCSet *pTouches,cocos2d::CCEvent *pEvent){
//结束后,我们再把它放回去吧
spriteClick->setAnchorPoint(ccp(0,0));
spriteClick->setPosition(ccp(0,0));
}
void HelloWorld::ccTouchesMoved(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent){
CCTouch *pTouch = (CCTouch*)(pTouches->anyObject());
CCPoint point=pTouch->locationInView();
//同意地,这个点的纵坐标有问题
point.y=320-point.y;
CCLog("-----%f----%f",point.x,point.y);
spriteClick->setAnchorPoint(ccp(0.5,0.5));
spriteClick->setPosition(point);
}
void HelloWorld:: ccTouchesCancelled(cocos2d::CCSet *pTouches, cocos2d::CCEvent *pEvent){
//什么情况取消呢?
//比如弹出电量提示框、其他弹窗、电话之类的
}
附上模拟器囧照三张
1、 Begin
2、 Move
3、 End
4、 Cancle(小for也取消图了^-^)
又到吃饭的时候了,真是好啊!小for祝大家幸福安康,欢迎交流学习,批评指正哦!