Белые линии при масштабировании

У меня эта проблема с craftyjs:

Когда я пытаюсь масштабировать область просмотра (Canvas), вокруг объектов появляются белые линии (цвет фона).

Я думаю, что это из-за половины пикселей, но я не могу найти способ исправить это. Кто-нибудь знает что делать?

РЕДАКТИРОВАТЬ: fiddle: http://jsfiddle.net/ysDtQ/44/

Crafty.init(960,540);
Crafty.canvas.init();  
Crafty.scene("loading", function() {
Crafty.background("#000");
Crafty.sprite(1200,768,"http://us.123rf.com/400wm/400/400/criminalatt/criminalatt1010/criminalatt101000007/8072257-gras-textuur-straight.jpg", {background : [0,0]});
Crafty.sprite(150,150,"http://www.fpmheemskerk.com/STooNeD.png",{stoo:[0,0]});
Crafty.e('2D, Canvas, background').attr({x:0, y:0, w:1200, h:798, z:1, alpha:1});
Crafty.e('2D, Canvas, stoo').attr({x:0, y:0, w:150, h:150, z:2, alpha:1}).bind("EnterFrame",function(){this.x += 0.01;});
Crafty.viewport.scale(1.51111);
});
Crafty.scene("loading");`

Но в моем коде я округляю позицию х, чтобы они всегда были круглыми

1 ответ

Кажется, проблема с какой-то комбинацией clearRect, clip, а также drawImage обработка половин пикселей по-разному, когда к холсту применено преобразование масштаба.

Когда один спрайт перемещается по фону, мы очищаем область, через которую он перемещался, обрезаем ее, а затем рисуем все перекрывающиеся объекты.

В этом случае операция очистки влияет на большее количество пикселей, чем операция рисования. Я смог исправить это в Chrome, но Firefox был довольно упрям ​​в том, чтобы относиться к ним по-другому. Я опубликую здесь снова, если смогу найти хорошее решение или обходной путь. (В худшем случае мы можем вернуться к перерисовке всего холста каждый раз при увеличении, но это отчасти отстает в плане производительности.)

Другие вопросы по тегам