я в настоящее время имея карту (tilemap) в пределах слоя, который я хотел бы панорамирование/масштабирование, используя следующий код:Проблема масштабирования слоя в центре пинч жест
- (void) pinchGestureUpdated: (UIPinchGestureRecognizer *) recognizer {
if([recognizer state] == UIGestureRecognizerStateBegan) {
_lastScale = [recognizer scale];
CGPoint touchLocation1 = [recognizer locationOfTouch:0 inView:recognizer.view];
CGPoint touchLocation2 = [recognizer locationOfTouch:1 inView:recognizer.view];
CGPoint centerGL = [[CCDirector sharedDirector] convertToGL: ccpMidpoint(touchLocation1, touchLocation2)];
_pinchCenter = [self convertToNodeSpace:centerGL];
}
else if ([recognizer state] == UIGestureRecognizerStateChanged) {
// NSLog(@"%d", recognizer.scale);
CGFloat newDeltaScale = 1 - (_lastScale - [recognizer scale]);
newDeltaScale = MIN(newDeltaScale, kMaxScale/self.scale);
newDeltaScale = MAX(newDeltaScale, kMinScale/self.scale);
CGFloat newScale = self.scale * newDeltaScale;
//self.scale = newScale;
[self scale: newScale atCenter:_pinchCenter];
_lastScale = [recognizer scale];
}
}
- (void) scale: (CGFloat) newScale atCenter: (CGPoint) center {
CGPoint oldCenterPoint = ccp(center.x * self.scale, center.y * self.scale);
// Set the scale.
self.scale = newScale;
// Get the new center point.
CGPoint newCenterPoint = ccp(center.x * self.scale, center.y * self.scale);
// Then calculate the delta.
CGPoint centerPointDelta = ccpSub(oldCenterPoint, newCenterPoint);
// Now adjust your layer by the delta.
self.position = ccpAdd(self.position, centerPointDelta);
}
мой вопрос заключается в том, что зум не действует в центре пинча, хотя я пытаюсь изменить его в то же самое время, когда я масштабируюсь по этому методу: (void) scale: (CGFloat) newScale atCenter: (CGPoint) center
. Есть ли причина, по которой это может произойти неправильно? Также как я могу преобразовать в центр расположения пинча в систему координат для моей сцены/слоя?
вашего требование на битовом поле на самом деле не нужно, поскольку каждый state is only – tiguero
также моя логика для преобразования из координаты экрана в координаты слоя была включена в мой фрагмент кода. – tiguero