【发布时间】:2014-05-21 06:44:08
【问题描述】:
我尝试动态生成多个画布,当我创建一个新画布时,前一个画布消失了。示例见此处:
http://jsfiddle.net/adrianh/5jspv/4/
这里是javascript代码:
var circleCount = 0;
function circleRect(rect)
{
var diameter = Math.sqrt(rect.width*rect.width+rect.height*rect.height);
var cx = (rect.right + rect.left)/2;
var cy = (rect.top + rect.bottom)/2;
var left = Math.floor(cx - diameter/2);
var top = Math.floor(cy - diameter/2);
diameter = Math.floor(diameter);
var html = "<canvas id='circleCanvas"+circleCount+"' "+
"width='"+(diameter+2)+"' "+
"height='"+(diameter+2)+"' "+
"style='"+
"position:absolute;"+
"z-index:0;"+
"left:"+(left-1)+"px;"+
"top:"+(top-1)+"px;"+
//"border:1px solid;"+
"' />";
alert(html);
var container = document.getElementById("circles");
container.innerHTML += html;
var c=document.getElementById("circleCanvas"+circleCount);
var ctx=c.getContext("2d");
ctx.beginPath();
ctx.arc(diameter/2+1,diameter/2+1,diameter/2,0,2*Math.PI);
ctx.stroke();
++circleCount;
}
$(".circled").each(function(i, obj) {
var rect = obj.getBoundingClientRect();
circleRect(rect);
});
为什么只显示一个画布?
【问题讨论】:
-
在你的代码运行后,你的 jsFiddle 中有两个
circled类的元素,有两个canvas元素。您希望发生什么没有发生的事情? -
我希望每个动态生成的、唯一标识的画布在执行结束时都可见。不仅仅是最后一个创建的。
-
啊,我。所以我所做的是每次我添加一个新的,我用空白的替换旧的,因为你的例子实际上没有触及原始画布?是这样吗? jquery是如何做到的?虽然这很奇怪,因为原始大小没有更改为默认值。它是如何工作的?
-
在我的回答中提供了一堆链接,希望它们能帮助你快速上手。
标签: javascript html html5-canvas