先来个效果图
---------------------------------分割线附上代码----------------------------------------------------------------
#include <stdio.h>
#include "HelpScene.h"
#include "StartMenuScene.h"
#include "HelpCCLayer.h"
using namespace cocos2d;
using namespace std;
CCPoint centerPoint;
CCSprite* h1Sprite;
CCSprite* h2Sprite;
CCSize size;
float offSetAnchor;
float y;
float beginX;
float maxLen=9; //sprites数组的长度
CCSprite* sprites[9];
int currentSprite;
float spriteWidth;
CCScene* HelpScene::scene(void)
{
CCScene * scene=NULL;
do{
scene = CCScene::create();
CC_BREAK_IF(!scene);
HelpScene *layer =HelpScene::create();
CC_BREAK_IF( !layer);
HelpCCLayer* layer1=HelpCCLayer::create();
CC_BREAK_IF( !layer1);
scene->addChild(layer,0);
scene->addChild(layer1,2);
}while(0);
return scene;
}
bool HelpScene::init(void){
bool bRet=false;
do{
CC_BREAK_IF(! CCLayer::init());
this->setTouchEnabled(true);
size= CCDirector::sharedDirector()->getWinSize();
CCSprite* bSprite=CCSprite::create("/help/help_kuang.png");
CC_BREAK_IF(! bSprite);
bSprite->setPosition(ccp(size.width/2, size.height/2));
y=size.height/2+20;;
centerPoint=CCPointMake(size.width/2,size.height/2+20);
sprites[0]=CCSprite::create("/help/cn/howtoplay01.jpg");
sprites[1]=CCSprite::create("/help/cn/howtoplay02.jpg");
sprites[2]=CCSprite::create("/help/cn/howtoplay03.jpg");
sprites[3]=CCSprite::create("/help/cn/howtoplay04.jpg");
sprites[4]=CCSprite::create("/help/cn/howtoplay05.jpg");
sprites[5]=CCSprite::create("/help/cn/howtoplay06.jpg");
sprites[6]=CCSprite::create("/help/cn/howtoplay07.jpg");
sprites[7]=CCSprite::create("/help/cn/howtoplay08.jpg");
sprites[8]=CCSprite::create("/help/cn/howtoplay09.jpg");
spriteWidth=sprites[0]->getContentSize().width;
//拼接图片
for(int i=0;i<9;i++){
sprites[i]->setPosition(ccp(size.width/2+spriteWidth*i,y));
this->addChild(sprites[i],0);
}
h1Sprite=sprites[0];
h2Sprite=sprites[1];
//add back item
CCMenu *menu=CCMenu::create();
menu->setPosition(CCPointZero);
CCMenuItemImage *backImage=CCMenuItemImage::create("/help/cn/help_back1.png","/help/cn/help_back2.png",this,menu_selector(HelpScene::backMenuCallback));
backImage->setPosition(ccp(size.width/2,90));
menu->addChild(backImage,0);
this->addChild(bSprite,1);
this->addChild(menu,2);
currentSprite=0;
bRet=true;
}while(0);
return bRet;
}
void HelpScene::backMenuCallback(CCObject *pSender){
CCDirector::sharedDirector()->replaceScene(StartMenu::scene());
}
void HelpScene::ccTouchesBegan(CCSet *touches, CCEvent *pEvent){
CCSetIterator iterator= touches->begin();
CCTouch *touch =(CCTouch*)(*iterator);
CCPoint tempPoint =touch->getLocationInView();
offSetAnchor=tempPoint.x-size.width/2;
beginX=tempPoint.x;
}
void HelpScene::ccTouchesMoved(CCSet *touches,CCEvent *pEvent){
CCSetIterator iterator= touches->begin();
CCTouch *touch =(CCTouch*)(*iterator);
CCPoint tempPoint =touch->getLocationInView();
float t=tempPoint.x-beginX;
for(int j=0;j<maxLen;j++){
//第一行
if(currentSprite==0){
if(t>20){
break;
}
//page++
for(int i=0;i<maxLen;i++){
//+spriteWidth*i
sprites[i]->runAction( CCPlace::actionWithPosition(CCPointMake(tempPoint.x-offSetAnchor-spriteWidth*(currentSprite-i),y)));
}
}else
//不是最后一行
if(currentSprite<maxLen-1){
for(int i=0;i<9;i++){
sprites[i]->runAction( CCPlace::actionWithPosition(CCPointMake(tempPoint.x-offSetAnchor-spriteWidth*(currentSprite-i),y)));
}
}//最后一行
else if(currentSprite>=maxLen-1){
if(t<-20){
break;
}
for(int i=0;i<maxLen;i++){
//+spriteWidth*i
sprites[i]->runAction( CCPlace::actionWithPosition(CCPointMake(tempPoint.x-offSetAnchor-spriteWidth*(currentSprite-i),y)));
}
}
}
}
void HelpScene::ccTouchesEnded(CCSet *touches,CCEvent *pEvent){
CCSetIterator iterator= touches->begin();
CCTouch *touch =(CCTouch*)(*iterator);
CCPoint tempPoint =touch->getLocationInView();
float offset= tempPoint.x-beginX;
//left
if(offset>0){
if(offset>100&¤tSprite>0){
for(int i=0;i<maxLen;i++){
sprites[i]->runAction(CCMoveTo::actionWithDuration(0.5,CCPointMake(size.width/2+spriteWidth*(i-currentSprite+1),getCenterPoint().y)));
}
currentSprite-=1;
}else{
for(int i=0;i<maxLen;i++){
//sprites[i]->runAction( CCPlace::actionWithPosition(CCPointMake(tempPoint.x-offSetAnchor+spriteWidth*i,y)));
sprites[i]->runAction(CCMoveTo::actionWithDuration(0.1,CCPointMake(size.width/2+spriteWidth*(i-currentSprite),getCenterPoint().y)));
}
}
}
//right
if(offset<0){
if(offset<-100&¤tSprite<maxLen-1){
for(int i=0;i<maxLen;i++){
sprites[i]->runAction(CCMoveTo::actionWithDuration(0.3,CCPointMake(size.width/2-spriteWidth*(currentSprite+1-i),getCenterPoint().y)));
}
currentSprite+=1;
}else{
for(int i=0;i<maxLen;i++){
sprites[i]->runAction(CCMoveTo::actionWithDuration(0.1,CCPointMake(size.width/2-spriteWidth*(currentSprite-i),getCenterPoint().y)));
}
}
}
}
void HelpScene::registerWithTouchDispatcher(void){
CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this,1);
}
CCPoint HelpScene::getCenterPoint(){
return centerPoint;
}