Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5画布内部的可拖动和可调整大小的元素_Javascript_Drag And Drop_Html5 Canvas - Fatal编程技术网

Javascript HTML5画布内部的可拖动和可调整大小的元素

Javascript HTML5画布内部的可拖动和可调整大小的元素,javascript,drag-and-drop,html5-canvas,Javascript,Drag And Drop,Html5 Canvas,是否可以使HTML5画布元素中的元素可拖动和调整大小。是否有办法使以下代码中的动态图像可移动: var ctx, imgArray; function initAll() { ctx = document.getElementById("canvas").getContext("2d"); imgArray = ["http://i46.tinypic.com/nqe1dt.jpg", "http://i50.tinypic.com/i

是否可以使HTML5画布元素中的元素可拖动和调整大小。是否有办法使以下代码中的动态图像可移动:

var ctx, imgArray;

function initAll() {
    ctx = document.getElementById("canvas").getContext("2d");
    imgArray = ["http://i46.tinypic.com/nqe1dt.jpg", 
                    "http://i50.tinypic.com/i21phi.jpg", 
                    "http://i49.tinypic.com/1zmfcrq.jpg", 
                    "http://i50.tinypic.com/v8g6mo.jpg", 
                    "http://i49.tinypic.com/21kh7ah.jpg"];
    drawCanvas();
    document.getElementById("checkgroup").onchange = drawCanvas;
}

function drawCanvas() {
   ctx.clearRect(0, 0, 600, 400);
   for(var i=0; i < imgArray.length; ++i) {
      var img = new Image();
      img.posX = (i < 3) ? i*200 : (i-2.5)*200;
      img.posY = (i < 3) ? 0 : 200;
      img.src = imgArray[i];
      img.onload = function() {
        ctx.drawImage(this, this.posX, this.posY, 150, 150);
      } 
   }
}
window.onload = initAll;
var-ctx,imgArray;
函数initAll(){
ctx=document.getElementById(“画布”).getContext(“2d”);
imgaray=[”http://i46.tinypic.com/nqe1dt.jpg", 
"http://i50.tinypic.com/i21phi.jpg", 
"http://i49.tinypic.com/1zmfcrq.jpg", 
"http://i50.tinypic.com/v8g6mo.jpg", 
"http://i49.tinypic.com/21kh7ah.jpg"];
画布();
document.getElementById(“checkgroup”).onchange=drawCanvas;
}
函数drawCanvas(){
ctx.clearRect(0,060400);
对于(变量i=0;i

该项目位于JSBin:

使用KineticJS,它为画布提供形状对象支持

KineticJS将为其形状提供鼠标事件,因此您可以更轻松地实现类似拖动的功能:


我认为这会相当复杂。如果有一个简单的方法来做这件事……是否可以使用easeljs来代替呢。我发现它工作得更好。此外,它使用真实的画布对象,而不是kineticjs中的容器div。画布本身只是一个像素缓冲区,您需要以某种方式提供形状跟踪。您可以手动完成(大约10k行代码)或仅使用类似KineticJS的div垫片。我不知道EaselJS,原始问题中也没有提到它。