Растровые изображения распадаются на Android при использовании createjs и canvas

Это не столько вопрос кода, сколько вопрос производительности. Я делаю небольшую игру, которая должна работать как в настольном браузере, так и в мобильном телефоне. Я делаю игру, используя HTML5 и CreateJs, и большую часть рисую на холсте.

Моя проблема в том, что все это отлично работает в стандартном настольном браузере, но как только я запускаю его через PhoneGap на своем устройстве Android, я получаю странные сбои в графике. Если я удаляю что-то с холста самым простым способом, например так:

stage.removeChild(myBitmap);
stage.update();

иногда, но не всегда, часть растрового изображения остается на холсте. Я бы сказал, что около 10% осталось там. Такое ощущение, что мне нужно очистить или перерисовать холст. Есть ли известная проблема с холстом на Android (я видел это только на Android) или это проблема, связанная с createjs?

Та же проблема возникает, если я перемещаю растровое изображение с анимацией.


person Maffelu    schedule 27.11.2013    source источник
comment
Определенно связано с Android. Холст Android (особенно в браузере, отличном от Chrome) является одной из самых проблемных реализаций холста и имеет множество подобных проблем, не говоря уже о низкой производительности.   -  person Lanny    schedule 27.11.2013
comment
У меня не было слишком много жалоб на производительность, но я не рисую так интенсивно. Однако это довольно большая ошибка. Невозможность переместить растровое изображение или удалить его с холста делает его бессмысленным :)   -  person Maffelu    schedule 27.11.2013
comment
Согласованный. К сожалению, это ошибка в браузере.   -  person Lanny    schedule 27.11.2013


Ответы (1)


Я наконец нашел решение. Это известная ошибка Android 4.1+, которая, по-видимому, происходит в основном на устройствах Samsung (S2+). Подробнее об этой проблеме читайте здесь: https://code.google.com/p/android/issues/detail?id=39247.

Короче говоря, следующий код решил мою проблему:

stage.update();
var canvas = document.getElementById("myCanvas");
canvas.style.opacity = 0.99;
setTimeout(function() 
{
    canvas.style.opacity = 1;
}, 1);

Значит, это не проблема PhoneGap или CreateJS!

person Maffelu    schedule 27.01.2014