捏(缩放)手势不正确缩放

问题描述:

我试图找出为什么我的缩放在我的OpenGL相机上表现得非常奇怪。 它的目的是放大和缩小,但其缩放非常随机。捏(缩放)手势不正确缩放

继承人我的代码:

- (void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer 
{ 
    NSLog (@"%@", @"Pinching"); 

    if (pinchRecognizer.state == UIGestureRecognizerStateBegan || 
       pinchRecognizer.state == UIGestureRecognizerStateChanged || 
       pinchRecognizer.state == UIGestureRecognizerStateEnded) { 
     currentScale = pinchRecognizer.scale; 
    } 

    if(lastScale < currentScale) { 
     _camera.z += currentScale * 0.01f; 
     lastScale = currentScale; 
    } 

    if (lastScale > currentScale) 
    { 
     _camera.z -= currentScale * 0.01f; 
     lastScale = currentScale; 
    } 

} 
+0

它随时改变的,所以它基本上不会以连续因子进行缩放。如果这是有道理的? – JavaCake 2012-03-13 21:10:07

如果你有什么事情,是乘法,你想让它添加剂,你需要采取日志:

- (void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer 
{ 
    if ((gesture.state == UIGestureRecognizerStateBegan) || 
     (gesture.state == UIGestureRecognizerStateChanged) || 
     (gesture.state == UIGestureRecognizerStateEnded)) { 
     _camera.z += log(gesture.scale); // you'll probably want to multiply this by some constant 
     gesture.scale = 1.0; 
    } 
} 
+0

你能举一个更完整的例子吗?因为这不能正常工作。 – JavaCake 2012-03-14 13:13:38

+0

这是一个完整的例子。正如我在评论中所说的,唯一需要做的就是将日志乘以一个常量,例如, '_camera.z + = someConstant * log(gesture.scale);'someConstant是某个数字。 – yuji 2012-03-14 17:54:10

+0

我明白这一点,但捏入和捏出时不会发生如此平滑,并且它不会始终对倒扣发生反应。手势状态有问题吗? – JavaCake 2012-03-14 18:37:40