画布鼠标移动

时间:2013-12-26 16:32:28

标签: javascript jquery canvas mousemove

也许你可以帮助我,我需要用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(',')+')");
    });

2 个答案:

答案 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(",") + ")");