Background Cocos 2d背景地图手势

Background Cocos 2d背景地图手势,background,cocos2d-iphone,gesture,Background,Cocos2d Iphone,Gesture,Cocos2d对我来说是全新的,所以我不知道该怎么处理这种情况: 我想做一个类似冒险的游戏。现在我制作了一个背景图像,就像一张世界地图(只是为了测试)。在这张地图上,我需要一个滑动手势,这样我就可以在我的ipad上移动地图了(地图很大,所以我想在周围滑动) 我的问题是我不知道我应该使用什么对象。以及如何以最佳方式实现手势(我是否需要自己计算动作?) 谢谢! Stefan.我想您正在寻找这个来添加一个对象: CCSprite *objectName = [CCSprite spriteWithFi

Cocos2d对我来说是全新的,所以我不知道该怎么处理这种情况:

我想做一个类似冒险的游戏。现在我制作了一个背景图像,就像一张世界地图(只是为了测试)。在这张地图上,我需要一个滑动手势,这样我就可以在我的ipad上移动地图了(地图很大,所以我想在周围滑动)

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

谢谢!
Stefan.

我想您正在寻找这个来添加一个对象:

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

默认情况下,我相信对象将位于左下角

您可以将UIKit的平移手势识别器连接到CCDirector的视图,并在CCLayer类中处理平移手势。这样,您就可以使用handle方法,该方法可以随着每次平移移动背景。(COCOS2D1.0.1的代码,2.0版本也可以这样做)

处理程序方法如下所示:

- (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;
    }
}
- (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;
    }
}