画布上的可拖动图像和鼠标事件

Posted

技术标签:

【中文标题】画布上的可拖动图像和鼠标事件【英文标题】:Draggable images on Canvas and mouse events 【发布时间】:2013-09-17 02:42:42 【问题描述】:

我有一个画布,上面有多个可拖动的图像。 如果我单击它,我想将图像移至顶部,但它不起作用.. 如果我在 for 循环之外手动插入图像,所有鼠标事件都会起作用。

代码如下:

for(i=0;i<myImagesPath.length;i++)
    
        var img = new Image();
        img.src = myImagesPath[i];
        myImages[i] = new Kinetic.Image(
          image: img,
          x: 30+100*i,
          y: stage.getHeight() - 100 - 10,
          width: 100,
          height: 100,
          draggable: true
        );

        // add cursor styling

        myImages[i].on('mouseover', function() 
          document.body.style.cursor = 'pointer';
        );
        myImages[i].on('mouseleave', function() 
          document.body.style.cursor = 'default';
        );
        myImages[i].on('click', function() 
          myImages[i].moveToTop();
        );

        layer.add(myImages[i]);
    

【问题讨论】:

【参考方案1】:

尝试改变这个:

myImages[i].on('click', function() 
  myImages[i].moveToTop();
);

到这里:

myImages[i].on('click', function() 
  this.moveToTop();
  layer.draw();
);

您需要draw() 图层才能在画布上呈现更改。使用this 可确保选择正确的节点。

JSFIDDLE

【讨论】:

以上是关于画布上的可拖动图像和鼠标事件的主要内容,如果未能解决你的问题,请参考以下文章

HTML5 Canvas:在画布外拖动

Java AWT 图形界面编程使用鼠标滚轮放大缩小 Canvas 画布 ( 鼠标滚轮事件监听器 MouseWheelListener )

js 外部按钮点击事件与canvas画布里的线条鼠标事件冲突

WPF C#如何使用鼠标使控件可拖动

鼠标事件不工作两次

使用Jquery或Javascript触发mousemove事件