請考慮這樣的代碼,draw()
函數在每個動畫循環中被調用,其中階段被清除並且梯度被應用於背景並且x,y被更改爲形狀:HTML5上的多個對象CANVAS,只繪製第一項
draw = function() {
for (i = 0; i < shapes.length; i++)
{
draw_sample_shape(i);
draw_coords(i);
}
}
draw_sample_shape = function(shape) {
ctx.globalCompositeOperation = "source-over";
ctx.fillStyle = color;
ctx.beginPath();
ctx.arc(shapes[shape].x, shapes[shape].y, 240, 0, Math.PI*2, false);
ctx.closePath();
ctx.fill();
}
draw_coords(shape) {
coords = shapes[shape].coords;
ctx.globalCompositeOperation = "destination-out";
ctx.beginPath();
ctx.moveTo(coords[0].x, coords[0].y);
for (i = 1; i < coords.length; i++)
{
if (coords[i].y == 'X' && coords[i].x == 'X')
{
ctx.closePath();
ctx.fill();
ctx.moveTo(0, 0);
ctx.beginPath();
if (typeof(coords[i+1]) != 'undefined')
{
ctx.moveTo((coords[i+1].x), (coords[i+1].y));
}
}
else
{
ctx.lineTo((coords[i].x), (coords[i].y));
}
}
ctx.closePath();
ctx.fill();
}
現在一切都運行完美,除非我在draw()
函數中調用draw_coords()
- 問題是它吸引和動畫只有第一個形狀,並跳過他們的休息。當我跳過這個呼叫時,它工作正常。
我使用[X,X]座標來重置圖形,並開始下一個形狀。 有人能告訴我什麼是錯的嗎?以及爲什麼當我繪製這些座標時,它只會在第一個元素上繪製它們?
你能給我們一個「形狀」的例子嗎? – 2011-12-28 15:20:37