это плохая была идея
Непомню где я её использывал, толи на спектруме толи в qbasic на 386, непомню. Но где-то она точно клёва работала

\
суть в том что перед тем как прорисоваться, спрайт копирует ту часть канваса в которую он будет рисоваться, затем рисуется, на следующем такте спрайт возвращает часть скопированного фона, передвигается и запоминает часть фона вновь.
но это бредовая для js идея, извлечение данных из канваса дико тормозная вещь. Вместо тысяч спрайтов по экрану с трудом будут ползать несколько десятков.
либо рисуйте фон для каждого кадра, вместо очистки экрана.
либо используйте несколько канвасов друг над другом, на нижнем фон, на верхнем спрайты и clearRect очистка