2013-04-30 3 views
1

У меня есть UIPanGestureRecognizer, связанный с родительским представлением, с различными CCSprite Я хочу перемещаться в родительском объекте при запуске. Использование [gesture locationOfTouch:i inView:recognizer.view] Я могу получить местоположение касания, но если я назначу это в центр моего подсмотра, он часто делает неожиданное перемещение неожиданно, поскольку исходное касание, вероятно, не находится в точном центре спрайта. На самом деле я хочу получить [gesture translationInView:recognizer.view] для каждого из мест касания и использовать это. Он отлично работает, когда у вас есть только 1 касание панорамирования, но более 1, и нет никакого способа получить перевод для них. Потому что каждое касание можно панорамировать в другом режиме/скорости. Пользователь может использовать 2 пальца для перемещения двух разных спрайтов, полностью независимых друг от друга. - [UIPanGestureRecognizer translationInView:] не позволяет мне получать разные переводы.UIPanGestureRecognizer получить перевод для каждой точки касания

Как мне это сделать?

+0

umm .. что случилось с '- [UIPanGestureRecognizer translationInView:]' для жестов с несколькими касаниями? зачем вам нужен отдельный перевод для каждого прикосновения? (кстати, это можно сделать, если вы отслеживаете касания и сохраняете последнее местоположение) – Mar0ux

+0

Потому что каждое касание может быть панорамирование в другом режиме/скорости. Таким образом, пользователь может использовать 2 пальца для перемещения двух разных подзонов, полностью независимых друг от друга. '- [UIPanGestureRecognizer translationInView:]' не позволяет мне получать разные переводы. – jamone

+0

, тогда у вас не должно быть 2 отдельных распознавателя жестов, по одному на каждом подвью? – Mar0ux

ответ

1

Я нашел категорию CCNode-SFGestureRecognizers, которая добавляет возможность прикреплять UIGestureRecognizers к любому CCNode. Таким образом, я могу обойтись, требуя нескольких значений перевода.

0

Теперь, если вас интересует только жест панорамы, почему бы не использовать методы касания кокосов?

В touchBegan: вычислить (и сохранить) местоположение касания в подсмотре, в touchMoved:, рассчитать перевод, который находится только в текущем местоположении, за исключением предыдущего места. Переместите подпункт на эту сумму.

+0

У меня есть кастрюля, поворот и ущипнуть все, что может случиться в любое время. – jamone

+0

Хорошо. Вы можете добавлять прозрачные представления ('UIView') сверху, которые соответствуют точным размерам и положению ваших спрайтов, и любые изменения, которые вы делаете для этого прозрачного UIView, вы применяете то же самое к' CCSprite'. Имеет ли это смысл? Возможно, стоит посмотреть на [это] (https://github.com/krzysztofzablocki/CCNode-SFGestureRecognizers) – Mar0ux

+0

Я изучил это, но производительность была ужасной. Спасибо за эту идею. Я получил его работу с использованием категории, которая позволяет распознавателям жестов присоединяться к 'CCNode'. См. Мой ответ выше. – jamone

Смежные вопросы