Как да изгладите превъртането на паралакса с жест на плъзгане

Добавих класовете за жестове, налични от примера за поддръжка на разпознаването на жестове. Имам 4 спрайта в горния слой, които трябва да бъдат преместени при плъзгане наляво/надясно и имам 3 спрайта за плъзгане в долния слой.

Имам следния код

-(id) init
{
// Some Stuff
[Gestures sharedGestures].swipeTolerance = 40;
[Gestures sharedGestures].pointResetLimit = 10;
[Gestures sharedGestures].delegate = self;
[Gestures sharedGestures].useX = NO;
[Gestures sharedGestures].useCircle = NO;
[Gestures sharedGestures].useSquare = NO;
for (int i=1; i<6; i++) 
    {
        NSString *str=[NSString stringWithFormat:@"Howtoplay_0%d.png",i];
        topLayer[i]=[CCSprite spriteWithFile:str];
        [topLayer[i] setPosition:ccp(640/2,480/2)];
        [self addChild:topLayer[i] z:1];
        [topLayer[i] setVisible:NO];
    }
    [topLayer[1] setVisible:YES];
    [topLayer[1] setPosition:ccp(320/2,480/2)];

    for (int i=1; i<4; i++) 
    {
        NSString *str=[NSString stringWithFormat:@"HowtoplayB_0%d.png",i];
        backLayer[i]=[CCSprite spriteWithFile:str];
        [backLayer[i] setPosition:ccp((320*i)/2,480/2)];
        [self addChild:backLayer[i] z:-1];

    }
    [backLayer[1] setPosition:ccp(320/2,480/2)];
}

-(void) registerWithTouchDispatcher{
[[CCTouchDispatcher sharedDispatcher] addTargetedDelegate:self priority:1 swallowsTouches:YES];
}

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
[[Gestures sharedGestures] reset];
return TRUE;
}

-(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {
    CGPoint point = [touch locationInView: [touch view]];
    CGPoint converted = [[CCDirector sharedDirector] convertToGL:point];
    [[Gestures sharedGestures] addPoint:converted];
}
-(void) swipeLeftComplete
{
    NSLog(@"Swipe Left Complete Called");
    [self MoveLeft];

}
-(void) swipeRightComplete
{
    [self MoveRight];
}
-(void)MoveLeft
{
    [topLayer[currentTop+1] setPosition:ccp(640/2,480/2)];
    [topLayer[currentTop+1] setVisible:YES];
    [topLayer[currentTop] runAction:[CCMoveTo actionWithDuration:2 position:ccp(-320/2,480/2)]];
    [topLayer[currentTop+1] runAction:[CCMoveTo actionWithDuration:2 position:ccp(320/2,480/2)]];

    [topLayer[currentTop-1] setVisible:NO];
    currentTop+=1;
}
-(void) MoveRight
{
    [topLayer[currentTop-1] setVisible:YES];
    [topLayer[currentTop] setVisible:YES];
    [topLayer[currentTop] runAction:[CCMoveTo actionWithDuration:2 position:ccp(-320/2,480/2)]];
    [topLayer[currentTop-1] runAction:[CCMoveTo actionWithDuration:2 position:ccp(320/2,480/2)]];
    currentTop--;
}

Не мога да плъзгам надясно/наляво плавно, това дава припокриване на горния слой. Моля, помогнете ми да изгладя движението на слоя.

Всякакъв вид помощ ще бъде оценена

Благодаря...


person Marine    schedule 23.03.2012    source източник


Отговори (1)


Вашият проблем звучи подобно на проблемите, с които аз и други сме се сблъсквали със спрайтове с подреждане и граници между тях. Опитайте да добавите това в горната част на вашия init оператор:

[[CCDirector sharedDirector] setProjection:CCDirectorProjection2D];
person BobbyScon    schedule 27.03.2012
comment
Пробвах вашия код, но не работи. Движи се с празнината между 2 горни слоя. - person Marine; 05.04.2012
comment
@Marine Има ли шанс да публикувате екранна снимка на тази празнина? Това може да е трудно, ако се появява само по време на движение, но не разбирам напълно какво виждате спрямо това, което трябва да се случи. - person BobbyScon; 05.04.2012