iOS: проблема с сохранением скриншота

19 октября 2017 14:20
Выяснилось, что на iOS не сохраняется изображение методом canvas.toDataURL(); Картинка выходит полностью прозрачной. Есть ли какой-нибудь способ обойти эту проблему? Никто не сталкивался с этим?
23 октября 2017 19:06
Вы попробовали воспользоваться функцией shot модуля screen?
Александр (команда Blend4Web)
twitter
25 октября 2017 12:19
Нужен именно toDataURL() чтобы послать данные на сервер
25 октября 2017 17:31
Посмотри реализацию внутри того модуля, когда идёт вызов toDataURL на канвасе, рендеринг должен был произведён. Если вызывать его непойми откуда, то велика вероятность что канвас будет черным - ничего не будет отрендерено.
там есть render_callback, надо в нём брать с канваса toDataURL . В самом конце функции frame в модуле ext/main.js есть как раз вызов:
m_main.frame();

в нём и варится вся лапша из модуля скриншотера
30 октября 2017 00:28
там есть render_callback, надо в нём брать с канваса toDataURL
Так, я собственно так и делаю

Кстати render_callback вызывается перед отрисовкой, может в этом проблема? Хотя на остальных платформах все нормально…
03 ноября 2017 00:35
Всё таки луше использовать технику, описанную dI0_oIb. Но это потребует изменения в исходном коде движка (в модуле main используются Blob для универсальной работы на всех платформах). Думаю, необходимо просто передать содержимое блоба (доступно по URL на всех платформах кроме IE 11-) на сервер. Возможно, соответствующее API появится в следующих релизах.
Команда Blend4Web
kirill@blend4web.com
03 ноября 2017 09:36
Таки опытным путем обнаружилось, что дело в двойном колбеке. Если сделать нормальный и скриншот верно сохраняется (верно обновленный) и с iOS нет проблем. Почему это происходит не понятно, но это так.
 
Пожалуйста, зарегистрируйтесь или войдите под своей учетной записью , чтобы оставлять сообщения.