【发布时间】:2014-04-12 17:23:57
【问题描述】:
我有一个用户输入的文本区域。当用户在文本区域字段中输入时,该文本呈现在画布上。所以它一个字母一个字母地出现。我无法使文本换行正常工作,因为它应该在用户键入时发生。
我有一个函数 drawtext();每次击键都会调用它。我遇到的问题是在下一行绘制文本时上一行消失了。我知道那是因为我在 for 循环中调用了 clearRect 。但是,如果我不这样做,那么我的文本会一直相互渲染。我该如何解决这个问题?
function drawText () {
var maxWidth = 500;
var textAreaString = $('textarea').val()+' ';
var theCanvas = document.getElementById("myCanvas");
var ctx = theCanvas.getContext('2d');
ctx.fillStyle = colors[currentBackground];
ctx.fillRect(0,0,598,335);
ctx.font = "50px Interstate";
ctx.textAlign = 'center';
var x = 300;
var y = 75;
var lineHeight = 50;
var words = textAreaString.split(' ');
var line = '';
for(var n = 0; n < words.length; n++) {
var testLine = line + words[n] + ' ';
var metrics = ctx.measureText(testLine);
ctx.clearRect(0,0,598,335);
ctx.fillStyle = '#ffffff';
var testWidth = metrics.width;
if (testWidth > maxWidth && n > 0) {
ctx.fillText(line, x, y);
line = words[n] + ' ';
y += lineHeight;
} else {
ctx.fillText(line, x, y);
line = testLine;
}
}
}
【问题讨论】:
标签: javascript canvas