2016-11-22 72 views
1

我一直在爲這一整天掙扎。我可以使圖像跟隨鼠標指針,但是當我嘗試轉動圖像角度時,我無法使其工作。您可以在這裏查看代碼:jsbin example。 以正確的方式在鼠標後面有另一個黑色方塊,但我無法使其與精靈圖像一起工作。使畫布內的圖像精靈跟隨鼠標

回答

1

您無法正確翻譯圖像中心的旋轉。你需要翻譯一半的寬度和高度,做旋轉,然後翻譯回來。

我已經更新了你的SpriteImage渲染方法正確翻譯:

this.render = function(xPos, yPos, scale, w, h, angle) { 
    ctx.save(); 

    ctx.translate(xPos, yPos); 
    ctx.translate(w/2, h/2); 
    ctx.rotate(angle); 
    ctx.translate(-w/2, -h/2); 
    ctx.fillRect(0, 0, w, h); 

    //console.log('angle:',angle); 
    ctx.drawImage(this.img, 
     this.x, this.y, 
     w, h, 
     0, 0, 
     width*scale, height*scale); 
    ctx.restore(); 
}; 

[編輯] 這裏給jsbin鏈接與更新的代碼:http://output.jsbin.com/tulimaxavu/1/edit

+0

非常感謝!這很好! –

+0

現在值得花些時間來研究仿射變換如何工作,以及它們如何與js中的畫布相關聯。在這種情況下,您可以將每個轉換視爲前一個轉換爲「堆疊」,並且它們都是針對當前原點而發生的。如果你想讓圖像的中心位置出現旋轉,你需要翻譯成它,然後旋轉。然後你需要翻譯回左上角,這樣當你畫出它時,它就在正確的位置。希望有所幫助。 –

+0

是的,它的確幫助我理解我錯過了將旋轉的起源轉換回開始的地方。再次感謝Yona。 –