我有一个像这样的数组(这是其中之一):
T1 = [
{
tipo:"m",
pos: [
[0,0]
]
},{
tipo:"b",
pos: [
[0,0.223,0.1,0.5,0.11,0.5]
]
},
{
tipo:"m",
pos: [
[0,0]
]
}
]
然后我验证了什么是类型,然后根据内容进行绘制。
function caminho(c, a) {
c.beginPath();
a.forEach(function(value, i) {
if (value.tipo === "m") {
c.moveTo(value.pos[i][0], value.pos[i][1]);
console.log(value.pos);
} else if (value.tipo === "l") {
value.pos.forEach(function(pos, j) {
c.lineTo(pos[0], pos[1]);
});
}
else if(value.tipo === "q") {
value.pos.forEach(function(pos,j) {
c.quadraticCurveTo(pos[0], pos[1], pos[2], pos[3]);
});
}
else if(value.tipo === "a") {
value.pos.forEach(function(pos,j) {
c.arc(pos[0],pos[1],pos[2],pos[3],pos[4]);
});
}
else if(value.tipo === "b") {
value.pos.forEach(function(pos,j) {
c.bezierCurveTo(pos[0],pos[1],pos[2],pos[3],pos[4],pos[5]);
})
}
});
c.closePath();
}
问题是因为我收到了这个错误,但如果我删除了最后一种类型的" m"从T1功能它工作正常。 我想用T1做的基本上是这样,但使用的结构是我用数组:
c2d.beginPath();
c2d.moveTo(0, 0);
c2d.bezierCurveTo(0,0.223,0.1,0.5,0.11,0.5);
c2d.moveTo(0, 0);
c2d.closePath();
答案 0 :(得分:0)
i
变量显示数组中项的索引。所以它将是0,1,2,......
但是你的pos
数组里面只有一个元素。所以从
c.moveTo(value.pos[i][0], value.pos[i][1]);
要
c.moveTo(value.pos[0][0], value.pos[0][1]);
这里的完整代码
function caminho(c, a) {
c.beginPath();
a.forEach(function(value, i) {
if (value.tipo === "m") {
c.moveTo(value.pos[0][0], value.pos[0][1]);
console.log(value.pos);
} else if (value.tipo === "l") {
value.pos.forEach(function(pos, j) {
c.lineTo(pos[0], pos[1]);
});
} else if (value.tipo === "q") {
value.pos.forEach(function(pos, j) {
c.quadraticCurveTo(pos[0], pos[1], pos[2], pos[3]);
});
} else if (value.tipo === "a") {
value.pos.forEach(function(pos, j) {
c.arc(pos[0], pos[1], pos[2], pos[3], pos[4]);
});
} else if (value.tipo === "b") {
value.pos.forEach(function(pos, j) {
c.bezierCurveTo(pos[0], pos[1], pos[2], pos[3], pos[4], pos[5]);
});
}
});
c.closePath();
}