用setInterval改变canvas的filltext text
change canvas filltext text with setInterval
我用画布设计了一个计数器。在设计中一切都很好,但是当我想改变时间数字并通过setInterval刷新它时,filltext start会创建它自己,它会改变它的位置。代码示例如下:
<canvas id="top-left" width="300" height="300"></canvas>
<script>
var canvas = document.getElementById("top-left");
var ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(canvas.width * 0.97,canvas.height * 0.06);
ctx.lineTo(canvas.width * 0.97,canvas.height * 0.97);
ctx.arc(canvas.width * 0.97,canvas.height * 0.97,canvas.width * 0.91,1*Math.PI,1.5*Math.PI);
ctx.moveTo(canvas.width * 0.97,canvas.height * 0.97);
ctx.lineTo(canvas.width * 0.06,canvas.height * 0.97);
ctx.shadowBlur = canvas.width * 0.016;
ctx.shadowOffsetX = canvas.width * 0.016;
ctx.shadowColor = "#666666";
ctx.fillStyle = "#98ae32";
ctx.fill();
ctx.lineWidth = canvas.width * 0.01;
ctx.lineCap = "round";
ctx.strokeStyle = "#000000";
ctx.stroke();
var x = 1;
var c = setInterval(function(){
ctx.font = canvas.width * 0.273 + "px Baskerville Old Face";
ctx.fillStyle = "#000000";
ctx.fillText(x,canvas.width * 0.33,canvas.height * 0.86);
x++;
if(x === 5){
clearInterval(c);
}
},1000);
</script>
我想知道如何改变filltext文本而不创建自己。我只是想更新文本。请帮我解决我的问题。谢谢你
如何在你的弧上画一组字
首先让你的代码可重用:
- 把你的文本放到数组中:
var texts=['Hello','World','Coding','is','Fun!'];
- 把你的弧路径命令放在一个函数中(为了方便重用)。
- 将您的文本绘制命令放在函数中(便于重用)。
然后创建一个动画循环,执行以下操作:
- 清除画布
- 画出你的弧线
- 绘制下一个文本。
- 如果有更多文字,重复#4。
下面是示例代码和演示:
var canvas=document.getElementById("canvas");
var ctx=canvas.getContext("2d");
var cw=canvas.width;
var ch=canvas.height;
var i=0;
var texts=['Hello','World','Coding','is','Fun!'];
var nextTime=0;
var duration=1000;
requestAnimationFrame(animate);
function animate(time){
if(time<nextTime){ requestAnimationFrame(animate); return;}
nextTime+=duration;
ctx.clearRect(0,0,cw,ch);
drawArc();
drawText(texts[i]);
i++;
if(i<texts.length){ requestAnimationFrame(animate); }
}
function drawText(text){
var px=canvas.width*0.273;
ctx.font = px + "px Baskerville Old Face";
ctx.textAlign='right';
ctx.fillStyle = "#000000";
ctx.fillText(text,canvas.width-15,canvas.height * 0.86);
}
function drawArc(){
ctx.beginPath();
ctx.moveTo(canvas.width * 0.97,canvas.height * 0.06);
ctx.lineTo(canvas.width * 0.97,canvas.height * 0.97);
ctx.arc(canvas.width * 0.97,canvas.height * 0.97,canvas.width * 0.91,1*Math.PI,1.5*Math.PI);
ctx.moveTo(canvas.width * 0.97,canvas.height * 0.97);
ctx.lineTo(canvas.width * 0.06,canvas.height * 0.97);
ctx.shadowBlur = canvas.width * 0.016;
ctx.shadowOffsetX = canvas.width * 0.016;
ctx.shadowColor = "#666666";
ctx.fillStyle = "#98ae32";
ctx.fill();
ctx.lineWidth = canvas.width * 0.01;
ctx.lineCap = "round";
ctx.strokeStyle = "#000000";
ctx.stroke();
}
body{ background-color: ivory; }
#canvas{border:1px solid red; margin:0 auto; }
<canvas id="canvas" width=175 height=175></canvas>
相关文章:
- 如何将输入(type=text)从html表单传递到javascript函数
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- 在文本区域中使用jQuery.text()保持换行符
- 用Javascript添加带有#text的tr元素
- 当用户按下回车键时,自动在text区域/text中插入消息
- 修正案'text'的元素
- 图像可以从源<img src=""/>.TEXT可以在没有javascript的情况下从外部
- W3验证器->使用<脚本类型=“;text/javascript”>在html的正文中
- 我如何在INPUT TEXT中使用这个Javascript和jQuery
- <text区域>在我的html中包含event.keycode==13之后,wrap就不起作用了
- 从所有下拉菜单中选择val和text
- 节点,express应用程序返回text/javascript响应头(Content-Type),尽管设置了applic
- .val()返回未定义的.text返回随机代码
- JSTree's data.rslt.obj.text()返回一个文本数组,而不是所需节点的文本
- type=text/javascript和language=javascript之间的区别
- 如何使用tspan拆分Ext.draw.text中的长文本
- text()显示双文本
- getDocument by id/get input text from button dons'不起作用
- Animation cuts off multiple lines of text in <p>
- 用setInterval改变canvas的filltext text