的cocos2d对我来说是新的prety,所以我不知道我应该有这种情况做:科科斯2D背景图的手势
我想打游戏那类似风险。现在我制作了一张像世界地图的背景图片(仅供测试)。并在这张地图上我想要一个轻扫手势,所以我可以在地图上移动我的ipad(地图是prety大,所以我想要刷到它周围)。
我的问题是我不知道什么对象被称为我应该使用。我如何以最好的方式实现手势(我是否需要自己计算运动?)。
谢谢! Stefan。
的cocos2d对我来说是新的prety,所以我不知道我应该有这种情况做:科科斯2D背景图的手势
我想打游戏那类似风险。现在我制作了一张像世界地图的背景图片(仅供测试)。并在这张地图上我想要一个轻扫手势,所以我可以在地图上移动我的ipad(地图是prety大,所以我想要刷到它周围)。
我的问题是我不知道什么对象被称为我应该使用。我如何以最好的方式实现手势(我是否需要自己计算运动?)。
谢谢! Stefan。
我认为你正在寻找这个添加的对象:
CCSprite *objectName = [CCSprite spriteWithFile:@"fileName.png"];
[self addChild:objectName];
默认情况下,我认为对象会在左下角。
您可能可以将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;
}
}