Вы можете создать что-то похожее на CCTransitionFlipX
.Но вместо CCScene пусть он работает на узлах вашей карты (спрайтах).
Вот реализация этого класса (CCTransition.m):
//
// FlipX Transition
//
@implementation CCTransitionFlipX
-(void) onEnter
{
[super onEnter];
CCActionInterval *inA, *outA;
[inScene_ setVisible: NO];
float inDeltaZ, inAngleZ;
float outDeltaZ, outAngleZ;
if( orientation == kOrientationRightOver ) {
inDeltaZ = 90;
inAngleZ = 270;
outDeltaZ = 90;
outAngleZ = 0;
} else {
inDeltaZ = -90;
inAngleZ = 90;
outDeltaZ = -90;
outAngleZ = 0;
}
inA = [CCSequence actions:
[CCDelayTime actionWithDuration:duration_/2],
[CCShow action],
[CCOrbitCamera actionWithDuration: duration_/2 radius: 1 deltaRadius:0 angleZ:inAngleZ deltaAngleZ:inDeltaZ angleX:0 deltaAngleX:0],
[CCCallFunc actionWithTarget:self selector:@selector(finish)],
nil ];
outA = [CCSequence actions:
[CCOrbitCamera actionWithDuration: duration_/2 radius: 1 deltaRadius:0 angleZ:outAngleZ deltaAngleZ:outDeltaZ angleX:0 deltaAngleX:0],
[CCHide action],
[CCDelayTime actionWithDuration:duration_/2],
nil ];
[inScene_ runAction: inA];
[outScene_ runAction: outA];
}
@end
По сути, он выполняет последовательность операций CCActions.на обеих сценах с заданной продолжительностью.Действие CCOrbitCamera
вращает камеру вокруг центра экрана, используя сферические координаты.