cocos2d-x实现滑屏(2)
来源:未知 责任编辑:责任编辑 发表时间:2013-11-26 22:13 点击:次
p>void CSlidingLayer::ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent)
p>{
p> m_bMoveLayer = true;
p> if (m_vecSprite.size() <= 0)
p> {
p> return ;
p> }
p>
p> int nCurSpriteTemp = m_nCurSprite;
p> int nWillShowSpriteIndex = m_nCurSprite; // 将要显示的精灵的索引,就是你左右滑动时,要显示的精灵
p> CCPoint ptTouch = pTouch->getLocation();
p> if (ptTouch.x > m_ptTouchDown.x) // 向右滑动
p> {
p> nWillShowSpriteIndex--;
p> }
p> else if (ptTouch.x < m_ptTouchDown.x) // 向左滑动
p> {
p> nWillShowSpriteIndex++;
p> }
p> nWillShowSpriteIndex = __max(0, nWillShowSpriteIndex);
p> nWillShowSpriteIndex = __min(nWillShowSpriteIndex, (int)m_vecSprite.size() - 1);
p> nCurSpriteTemp = __max(0, nCurSpriteTemp);
p> nCurSpriteTemp = __min(nCurSpriteTemp, (int)m_vecSprite.size() - 1);
p>
p> // 当前页移动显示
p> int nDalta = ptTouch.x - m_ptTouchDown.x; // 手指当前滑动到的触摸点与刚开始触摸的点的X差值
p> CCSprite* pSprite = m_vecSprite[nCurSpriteTemp];
p> CCAssert(pSprite != NULL, "");
p> CCSize size = CCDirector::sharedDirector()->getWinSize();
p> pSprite->setPosition(ccp(size.width / 2 + nDalta, size.height / 2)); // 移动当前页
p>
p> if (nWillShowSpriteIndex != nCurSpriteTemp) // 移动将要显示的页
p> {
p> CCSprite* pSpriteWillShow = m_vecSprite[nWillShowSpriteIndex];
p> MUSTOK(pSpriteWillShow);
p> if (nWillShowSpriteIndex < nCurSpriteTemp)
p> {
p> pSpriteWillShow->setPosition(ccp(-size.width / 2 + nDalta, size.height / 2)); // 向右移动时,将要显示的页在屏幕左边,锚点在半屏之外
p> }
p> else
p> {
p> pSpriteWillShow->setPosition(ccp(size.width * 3 / 2 + nDalta, size.height / 2)); // 向左移动时,将要显示的页在屏幕右边,锚点在3/2屏之外
p> }
p> }
p>}
p>
p>//////////////////////////////////////////////////////////////////////////
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>