写在前面::因为还不是很熟练,这些方法只是自己想到的而已,或许有更好的方法,现在只是写下来,备用。
1、关于拖动缓冲
我的思路是根据拖动方向,在触摸结束后,创建一个动作moveTo,目标点是精灵当前坐标加上根据拖动方向设置的一个点。因此这里涉及到点的计算;
首先,在ccTouchBegin里面获取开始触摸的点 beginPos,在ccTouchEnded里面获取结束的触摸点 endPos;
接着,根据这两个点就可以获得移动/拖动的方向,也可以说endPos相对于beginPos的坐标;
最后,获得了方向之后,在精灵被拖动后的位置的基础上加上这个方向,创建一个动作,让这个精灵运行这个动作就有简单的缓冲效果。直接上代码:
//touch开始,获得开始点的坐标
void TestLayer::ccTouchesBegan(CCSet *pTouches, CCEvent *pEvent){
CCSetIterator ite=pTouches->begin();
CCTouch* pTouch=(CCTouch*)(*ite);
beginPos=pTouch->getLocation();
}
//touch结束,获得结束点的坐标
void TestLayer::ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent){
CCSetIterator ite=pTouches->begin();
CCTouch* pTouch&