2012-08-02 308 views
2

是否可以使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/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; 

該項目在JSBin發現:http://jsbin.com/welcome/7209/edit

+0

我認爲,這將是相當複雜的。如果只有這樣做的簡單方法....... – starbeamrainbowlabs 2012-08-02 09:54:56

回答

1

使用KineticJS提供畫布形狀對象的支持。

KineticJS將提供其形狀的鼠標事件,從而可以更輕鬆地實現拖放式功能:

http://www.html5canvastutorials.com/kineticjs/html5-canvas-drag-and-drop-tutorial/

+0

是否可以使用easeljs代替。我發現它運作得更好。另外,它使用一個真實的畫布對象而不是kineticjs中的一個容器div。 – Hanzel 2012-08-03 10:04:37

+0

畫布本身只是一個像素緩衝區,您需要以某種方式提供形狀跟蹤。你可以手工完成(最多10K行代碼),或者使用KineticJS等div墊片。我不知道EaselJS,它在原始問題中沒有提及。 – 2012-08-03 10:22:51

相關問題