Я сделал нечто похожее на это, используя cocos2d (с разными взглядами).Я решил проблему с помощью scrollIng CCLayer, в котором размещалось 2 (или более) слоя.Этот слой прокрутки был частью сцены, над которой был расположен еще один слой управления (выше z).Вы можете добиться того же самого, если у вас есть разные руки игроков как слои в прокручиваемом слое, а затем отдельный слой, который выше скроллера с 2 спрайтами или 2 кнопками, которые сообщают прокручивающему слою, к какому из его внутренних слоев следует прокрутить.,Уровень прокрутки и уровень управления могут обмениваться данными, используя общую CCScene, в которой они оба.
Извините, я думаю, мой ответ не был полностью ясен.Эти методы должны входить в подкласс CCLayer, поэтому интерфейсом должен быть myScrollerLayer: CCLayer.Сцена должна создать массив, а также создать scrollerLayer, передав ему созданный массив.Таким образом, поскольку у вас есть ссылка как на слой управления, так и на слой scrollerLayer в сцене, вы можете передавать сообщения каждому слою.
Вот код для слоя прокрутки, вы должны сначала создать 2 слоя, которые представляютИгрок, затем вы можете запустить новый слой прокрутки, передав ему массив слоев:
-(id) initWithPlayerHands:(NSMutableArray *)layers
{
if ( (self = [super init]) )
{
// Make sure the layer accepts touches
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:-1 swallowsTouches:NO];
[self setIsTouchEnabled:YES];
// Set up the starting variables
currentScreen = 1;
scrollWidth = [[CCDirector sharedDirector] winSize].width;
scrollHeight = [[CCDirector sharedDirector] winSize].height;
startWidth = scrollWidth;
startHeight = scrollHeight;
allPlayers = [[NSMutableArray array] retain]; //iVar that holds the layers that represent the players hands.
// Loop through the array and add the screens
int count = [layers count];
int i = 0;
for (CCLayer *l in layers)
{
l.anchorPoint = ccp(0,0);
l.position = ccp((i*scrollWidth),0);
//Add them with inverse levels so that the touches can pass through all of the board layers (This is something I did special for my project, I don't think you have to)
[self addChild:l z:count];
[allLayers addObject:l];
i=i+1;
count-=1;
}
// Setup a count of the available screens
totalScreens = i;
}
return self;
}
А вот как перейти к руке игрока:
-(void) moveToPlayerHand:(int)hand //this represents the layer you want to move to
{
id changeHand = [CCEaseBounce actionWithAction:[CCMoveTo actionWithDuration:0.3 position:ccp(-((page-1)*scrollWidth),0)]];
[self runAction:changeHand];
currentScreen = hand;
}
Я надеюсь, что это поможет вам в правильном направлении, если вы хотите увидеть, как это сработало для меня, вы можете проверить ссылку в моем профиле.В середине страницы есть видео, показывающее прокрутку.