Exemplo n.º 1
0
void GiftListView::ccTouchEnded( CCTouch *pTouch, CCEvent *pEvent )
{
	this->unschedule(schedule_selector(GiftListView::touchUpdate));
	//CCLOG("touch end-------");
	if (mNowSeledItem)
	{
		if (!mIsClickEnable)
			return;
		mNowSeledItem->setStatus(GiftItem::nor);
		if (mApater !=NULL)
			mApater->onSelItem(mNowSeledItem);
		mNowSeledItem = NULL;
		return;
	}

	CCLayer* minDisPage = (CCLayer*)mPages.objectAtIndex(0);
	int minDis = abs(minDisPage->getPositionX());
	int minx = minDisPage->getPositionX();
	int minPage = 1;
	int i=1;
	//CCLOG("list move m:%f t:%f v:%f",mMovex,mTimer,abs(mMovex/mTimer));
	if ( abs(mMovex/mTimer)>500)//滑动速度很快,翻页
	{
		CCLOG("move far!!!");
		int dis = (mMovex<0)?1:-1;
		int nextPage = (mPageCurr+dis<1)?1:(mPageCurr+dis);
		if (nextPage>(int)mPages.count())
			nextPage = mPages.count();
		minDisPage = (CCLayer*)mPages.objectAtIndex(nextPage-1);
		minx = minDisPage->getPositionX();
		minPage = nextPage;
	}
	else//滑动速度慢 判断最后哪一页
	{
		for (;i<mPageTotal;i++)//获取离要到的页面
		{
			CCLayer* page = (CCLayer*)mPages.objectAtIndex(i);
			int dis = abs(page->getPositionX());
			if (dis<minDis)
			{	
				minDisPage = page;
				minDis = dis;
				minx =page->getPositionX(); 
				minPage = i+1;
			}
		}
	}
	
	mPageCurr = minPage;
	setPageMarkerShow(mPageCurr);
	//CCLOG("minPage %d",minPage);

	int moveDis = -minx;
	for (i=0;i<mPageTotal;i++)
	{
		CCLayer* page = (CCLayer*)mPages.objectAtIndex(i);
		CCPoint topoint = ccp(moveDis,page->getPositionY());
		CCActionInterval* moveto = CCMoveBy::create(0.6f,topoint);
		CCEaseExponentialOut* moveAction =  CCEaseExponentialOut::create(moveto);
		moveAction->setTag(999);
		page->runAction(moveAction);
	}

	mIsMove =false;
	mMovex = 0;
	mTimer = 0;
}