也许你可以帮助我,我需要用jquery和canvas创建一个动画。因此,我希望在鼠标移动时更改我的画布元素的颜色,颜色rgb必须是随机的,并在鼠标移动时更改。
这是我的代码(画布+查询):
window.onload = function()
{
var canvas = document.getElementById('canvas'),
context = canvas.getContext('2d');
function drawanim(color){
context.fillStyle=color;
context.beginPath();
context.moveTo(106,20);
context.lineTo(130,67);
context.lineTo(182,74);
context.lineTo(144,111);
context.lineTo(153,163);
context.lineTo(106,139);
context.lineTo(60,163);
context.lineTo(69,111);
context.lineTo(31,74);
context.lineTo(83,67);
context.lineTo(106,20);
context.fill();
}
drawanim("color");
// SOURIS POSITION
var $canvas = $('#canvas'),
w = 0,h = 0,
rgb = [],
getWidth = function() {
w = $win.width();
h = $win.height();
};
$('#canvas').resize(getWidth).mousemove(function (e) {
rgb = [
Math.round(e.pageX/w * 255),
Math.round(e.pageY/h * 255),
150
];
drawanim("rgb('+rgb.join(',')+')");
});
答案 0 :(得分:1)
您没有正确构建字符串:
drawanim("rgb(" + rgb.join(",") + ")");
一种说法是注意此网站上的语法检测器如何为代码着色。在您的情况下,它将整个表达式着色为单个字符串。
答案 1 :(得分:0)
假设您希望RGB真正随机:
rgb = [
0 | Math.random() * 256,
0 | Math.random() * 256,
0 | Math.random() * 256
];
drawanim("rgb(" + rgb.join(",") + ")");
或者,正如您的代码所示,它会响应光标位置;你有什么应该工作,你只需要在这里更正引号:
drawanim("rgb(" + rgb.join(",") + ")");