** См. Edit 2 для текущего решения этой проблемы. **
У меня есть несколько неясная проблема, которую Google и поиск через StackOverflow еще не решили. Paper.js не работает через iOS.
В настоящее время я создаю веб-приложение для рисования на доске, которое использует paper.js для функциональности рисования. Он отлично работает на рабочем столе в Chrome, FireFox и Safari. На Android-устройствах работает нормально, но тормозит. Проблема возникает при использовании приложения на устройствах iOS.
По какой-то причине мое приложение не может создавать пути при использовании его на iOS через мобильный Safari или мобильный Chrome. Поведение на iOS — это просто неотзывчивый холст.
В настоящее время у меня нет доступа к устройству, которое я мог бы использовать для удаленной отладки, поэтому я не могу собрать какие-либо полезные данные для отладки.
Ссылка на веб-приложение для тестирования. http://alexpersian.github.io/html/whiteboard.html
Фрагмент кода paperscript, задействованный в рисовании.
var myPath;
function onMouseDown(event) {
myPath = new Path();
myPath.add(event.point);
myPath.strokeColor = WBAPP.penColor; // WBAPP is from main Javascript
myPath.strokeWidth = WBAPP.penStroke;
myPath.strokeCap = 'round';
}
function onMouseDrag(event) {
myPath.add(event.point);
}
function onMouseUp(event) {
myPath.simplify();
}
Изменить: я провел дополнительное тестирование и обнаружил, что он работает на устройствах под управлением iOS 7, но не iOS 8. Мне любопытно, было ли изменение в iOS 8, которое ограничивало веб-взаимодействие touchEvents.
Редактировать 2: я смог решить эту проблему, добавив этот фрагмент кода.
document.addEventListener('touchmove', function(event) {
event.preventDefault();
}, false);
Это предотвращает действие касания по умолчанию в iOS 8, которое кажется действием прокрутки/панорамирования, потому что оно мешает событию onMouseDrag из paper.js.
Юрг Лени, один из создателей paper.js, изучает, следует ли включить это в саму библиотеку. До тех пор этот фрагмент должен помочь.