2012-11-26 42 views
1

的cocos2d对我来说是新的prety,所以我不知道我应该有这种情况做:科科斯2D背景图的手势

我想打游戏那类似风险。现在我制作了一张像世界地图的背景图片(仅供测试)。并在这张地图上我想要一个轻扫手势,所以我可以在地图上移动我的ipad(地图是prety大,所以我想要刷到它周围)。

我的问题是我不知道什么对象被称为我应该使用。我如何以最好的方式实现手势(我是否需要自己计算运动?)。

谢谢! Stefan。

回答

-1

我认为你正在寻找这个添加的对象:

CCSprite *objectName = [CCSprite spriteWithFile:@"fileName.png"]; 
    [self addChild:objectName]; 

默认情况下,我认为对象会在左下角。

3

您可能可以将UIKit的Pan Gesture识别器连接到CCDirector的视图并处理CCLayer类中的平移手势。通过这种方式,您可以处理随每次平移运动而移动背景的方法。 (代码cocos2d的1.0.1,类似的可与2.0版本实现)

UIPanGestureRecognizer* pan = [[[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePanGesture:)] autorelease]; 
CCDirector* director = [CCDirector sharedDirector]; 
[[director openGLView] addGestureRecognizer:pan]; 

处理方法是这样的:

- (void)handlePanGesture:(UIGestureRecognizer*)gestureRecognizer { 
// If there is more than one pan gesture recognizer connected with this method, you should remember pan and check if gestureRecognizer is equal to pan 

switch (gestureRecognizer.state) { 
    case UIGestureRecognizerStateBegan: { 

     // Do something that needs to be done when pan gesture started 

     break; 
    } 
    case UIGestureRecognizerStateChanged: { 

     // Get pan gesture recognizer translation 
     CGPoint translation = [(UIPanGestureRecognizer*)gestureRecognizer translationInView:gestureRecognizer.view]; 

     // Invert Y since position and offset are calculated in gl coordinates 
     translation = ccp(translation.x, -translation.y); 

     // Here you should move your background, probably in oposite direction of translation vector, something like 
     background.position = ccp(background.position.x - translation.x, background.position.y - translation.y); 

     // Refresh pan gesture recognizer 
     [(UIPanGestureRecognizer*)gestureRecognizer setTranslation:CGPointZero inView:gestureRecognizer.view]; 

     break; 
    } 
    case UIGestureRecognizerStateEnded: { 

     // Do some work that should be done after panning is finished 

     break; 
    } 
    default: 
     break; 
    } 
}