Разве это не должно быть:
dropContext.clearRect(ballX,ballY,dropBall.width,dropBall.height);
или я что-то неправильно понимаю?
Если вы сделаете это наоборот, то единственный очищаемый прямоугольник - это квадрат от (От 0,0) до (ширина шара, высота шара).
РЕДАКТИРОВАТЬ: Это на самом деле может быть
dropContext.clearRect(ballX-(dropBall.width/2),ballY-(dropBall.height/2),dropBall.width,dropBall.height);
Если ваш шар центрирован на шаре X.
РЕДАКТИРОВАТЬ РЕДАКТИРОВАТЬ:
Я исправил это для вас:
function activeBall() {
dropContext.clearRect(ballX-(dropBall.width/2),ballY-(dropBall.height/2),dropBall.width,dropBall.height);
dropContext.beginPath();
dropContext.arc(ballX, ballY, 10, 2 * Math.PI, 0, true);
dropContext.fill();
ballY--;
ballX++;
var time = 100;
setTimeout("activeBall()", time);
}
- Вы очищали прямоугольник в верхнем левом углу вашего холста.
- У вас естьчтобы вызвать beginPath (), а затем выполнить всю работу по рисованию.Очистка должна вызываться вне beginPath () и fill ().
Конкретные строки:
dropContext.clearRect(ballX-(dropBall.width/2),ballY-(dropBall.height/2),dropBall.width,dropBall.height);
dropContext.beginPath();