Usa context.clearRect(), pero primero tienes que encontrar el rectángulo para borrar. Esto se basa en una serie de factores, como el tamaño del texto y la propiedad textAlign del contexto canvas cuando el texto se dibujó originalmente. El código siguiente sería para el método de dibujo de un objeto que dibuja texto en un contexto de lienzo, como tal tiene propiedades para x, y, tamaño de texto, alineación horizontal, etc. Tenga en cuenta que siempre almacenamos la última pieza de texto dibujada para que podamos puede borrar un rectángulo de tamaño apropiado cuando se cambia el valor siguiente.
this.draw = function() {
var metrics = this.ctx.measureText(this.lastValue),
rect = {
x: 0,
y: this.y - this.textSize/2,
width: metrics.width,
height: this.textSize,
};
switch(this.hAlign) {
case 'center':
rect.x = this.x - metrics.width/2;
break;
case 'left':
rect.x = this.x;
break;
case 'right':
rect.x = this.x - metrics.width;
break;
}
this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);
this.ctx.font = this.weight + ' ' + this.textSize + ' ' + this.font;
this.ctx.textAlign = this.hAlign;
this.ctx.fillText(this.value, this.x, this.y);
this.lastValue = this.value;
}
Gracias, creo que este es el enfoque correcto para eliminar parte de la necesidad de un aclarado continuo y volver a dibujar. Más información aquí: https://stackoverflow.com/questions/3008635/html5-canvas-element-multiple-layers – Andrew