如何使用滑动手势平滑视差滚动

问题描述:

我已添加可从example获得的手势类别以支持手势识别。 我有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--; 
} 

我无法刷卡左/右顺利它给顶层的重叠。请帮助我平滑图层移动。

任何一种帮助的可以理解的

谢谢...

你的问题听起来很相似,我和其他人,都面临着与他们之间的拼接精灵和边界问题。尝试添加到您的init语句的顶部:

[[CCDirector sharedDirector] setProjection:CCDirectorProjection2D]; 
+0

我试过你的代码,但它不起作用。它随着两个顶层之间的差距而移动。 – Marine 2012-04-05 05:33:31

+0

@海军陆战队你有没有机会发布这个差距的屏幕截图?如果它仅在移动过程中出现,这可能会很困难,但我不太了解你所看到的和应该发生的事情。 – BobbyScon 2012-04-05 13:21:20