【发布时间】:2011-09-09 17:45:05
【问题描述】:
为了玩转 HTML5 画布,我决定制作一个绘制模拟表盘的应用程序。一切都很好,只是旧行没有像我期望的那样被删除。我在下面包含了部分代码 - DrawHands() 每秒调用一次:
var hoursPoint = new Object();
var minutesPoint = new Object();
var secondsPoint = new Object();
function drawHands()
{
var now = new Date();
drawLine(centerX, centerY, secondsPoint.X, secondsPoint.Y, "white", 1);
var seconds = now.getSeconds();
secondsPoint = getOtherEndOfLine(centerX, centerY, 2 * Math.PI / 60 * seconds, 0.75 * radius);
drawLine(centerX, centerY, secondsPoint.X, secondsPoint.Y, "black", 1);
drawLine(centerX, centerY, minutesPoint.X, minutesPoint.Y, "white", 3);
var minutes = now.getMinutes();
minutesPoint = getOtherEndOfLine(centerX, centerY, 2 * Math.PI / 60 * minutes, 0.75 * radius);
drawLine(centerX, centerY, minutesPoint.X, minutesPoint.Y, "black", 3);
drawLine(centerX, centerY, hoursPoint.X, hoursPoint.Y, "white", 3);
var hours = now.getHours();
if (hours >= 12) { hours -= 12; } // Hours are 0-11
hoursPoint = getOtherEndOfLine(centerX, centerY, (2 * Math.PI / 12 * hours) + (2 * Math.PI / 12 / 60 * minutes), 0.6 * radius);
drawLine(centerX, centerY, hoursPoint.X, hoursPoint.Y, "black", 3);
}
为了理解上述内容,有两个辅助函数:
- drawLine(x1, y1, x2, y2, 颜色, 粗细)
- getOtherEndOfLine(x, y, 角度, 长度)
问题在于,虽然所有的手都按预期绘制成黑色,但它们永远不会被擦除。我希望由于同一条线是用白色(背景色)绘制的,它会有效地擦除之前在该点绘制的内容。但这似乎并非如此。
我缺少什么吗?
【问题讨论】:
标签: javascript html html5-canvas