Я получил много помощи от этого сайта, но у меня, кажется, проблема собрать все это вместе. В частности, в JS я знаю, как
а) нарисовать изображение на холсте
б) заставьте прямоугольник следовать за курсором (Рисование на холсте) и (http://billmill.org/static/canvastutorial/ball.html)
c) нарисуйте прямоугольник, чтобы использовать его в качестве фона
Чего я не могу понять, так это того, как использовать прямоугольник в качестве фона, а затем нарисовать изображение (png) на холсте и заставить его следовать за курсором.
То, что у меня есть до сих пор, выглядит так:
var canvas = document.getElementByID('canvas');
var ctx = canvas.getContext('2d');
var WIDTH = canvas.width;
var HEIGHT = canvas.height;
var bgColor = '#FFFFFF';
var cirColor = '#000000';
clear = function() {
ctx.clearRect(0, 0, WIDTH, HEIGHT);
}
drawIMG = function(x,y,r) {
ctx.fillStyle = cirColor;
ctx.beginPath();
ctx.arc(x, y, r, 0, Math.PI*2, true);
ctx.closePath();
ctx.fill();
}
draw = function() {
ctx.fillStyle = bgColor;
clear();
ctx.fillRect(0, 0, WIDTH, HEIGHT);
drawIMG(150, 150, 30);
drawIMG(300, 500, 12);
};
draw();
Это отобразит элемент холста HTML5, высота и ширина которого указаны в HTML и поэтому являются переменными, с белым прямоугольником размером с холст под двумя черными кругами в точках (150 150) и (300 500). Он делает это отлично.
Однако я не знаю, как заставить JS рисовать .png поверх того, что следует за курсором. Как я уже сказал, я смог выполнить большинство шагов по отдельности, но понятия не имею, как их комбинировать. Я знаю, например, что я должен сделать
img = new Image();
а потом
img.src = 'myPic.png';
в какой-то момент. Их нужно сочетать с модификаторами позиции, такими как
var xPos = pos.clientX;
var yPos = pos.clientY;
ctx.drawImage(img, xPos, yPos);
Но я понятия не имею, как это сделать, сохраняя при этом какие-либо другие вещи, которые я написал выше (в частности, фон).
Спасибо за ваше терпение, если вы прочитали все это. Я не спал какое-то время и боюсь, что мой мозг настолько загорелся, что я не узнал бы ответ, если бы он разделся догола и исполнил Макарену. Я был бы признателен за любую помощь, которую вы могли бы прислать мне, но я думаю, что рабочий пример будет лучше. Я посвящен в религию программирования и до сих пор лучше всего учусь, бессовестно копируя, а затем изменяя.
В любом случае, заранее примите мою оптимистическую благодарность.