El lienzo chismeará.
Primero, el último setInterval("draw()", 100); en el código debe cambiarse a setInterval(draw, 100); Aunque escribir de esta manera será eficaz, se recomienda encarecidamente no hacerlo. Luego dijiste que tu código simplemente parpadea en la pantalla, por lo que debes ajustar cxt.begin path() primero al dibujar y al final del dibujo soltar cxt.close paht(); Hay una explicación en este sitio web del w3c. No estoy seguro si resuelve tu problema. Adicional: Probé el código y descubrí que el problema es tuyo.
img.onload=function()
{
cxt .dibujar imagen(img, x, y, 80, 80); p>}
La función de dibujo en el método de devolución de llamada img.onload no se puede llamar aquí, solo dibuja directamente, cxt. dibuja la imagen (img, x, y, 80, 80);