2013-12-11 219 views
2

我想畫在畫布填充(或不填充)的圓上點擊鼠標,但我不能讓我的代碼都正常工作,我嘗試了幾乎一切!繪製在畫布的圓圈上點擊鼠標

這是我的HTML:

<div id="images"></div> 
<canvas style="margin:0;padding:0;position:relative;left:50px;top:50px;" id="imgCanvas" width="250" height="250" onclick="draw(e)"></canvas> 

和我目前的腳本:

var canvas = document.getElementById("imgCanvas"); 
var context = canvas.getContext("2d"); 

function createImageOnCanvas(imageId) { 
    canvas.style.display = "block"; 
    document.getElementById("images").style.overflowY = "hidden"; 
    var img = new Image(300, 300); 
    img.src = document.getElementById(imageId).src; 
    context.drawImage(img, (0), (0)); //onload.... 
} 

function draw(e) { 
    var pos = getMousePos(canvas, e); 
    posx = pos.x; 
    posy = pos.y; 
    context.fillStyle = "#000000"; 
    context.arc(posx, posy, 50, 0, 2 * Math.PI); 
} 

function getMousePos(canvas, evt) { 
    var rect = canvas.getBoundingClientRect(); 
    return { 
     x: evt.clientX - rect.left, 
     y: evt.clientY - rect.top 
    }; 
} 

我想我的問題是function draw(e),即使我感到非常有信心的那部分。

這裏是jsFiddle

回答

7

我已付出和更新你的提琴製作工作示例:http://jsfiddle.net/ankr/ds9s7/161/

而且錯誤地引用事件 - 由別人說 - 你還沒有開始,也沒有結束你的路徑繪圖時。新增context.beginPath()context.fill()電話

下面是相關的JS代碼

var canvas = document.getElementById("imgCanvas"); 
var context = canvas.getContext("2d"); 

function draw(e) { 
    var pos = getMousePos(canvas, e); 
    posx = pos.x; 
    posy = pos.y; 
    context.fillStyle = "#000000"; 
    context.beginPath(); 
    context.arc(posx, posy, 50, 0, 2*Math.PI); 
    context.fill(); 
} 

function getMousePos(canvas, evt) { 
    var rect = canvas.getBoundingClientRect(); 
    return { 
     x: evt.clientX - rect.left, 
     y: evt.clientY - rect.top 
    }; 
} 
+2

將方便地指出確切的更改,如從'畫(E)在'onclick'變化'來'畫(事件)'並確定所做的確切更改。如果發生了小提琴改變或脫機這否則將沒有意義。 – Nope

+0

您好,謝謝您的回答!這不起作用,因爲我使用「嚴格使用」;命令,禁用整個腳本,是啊,你知道這筆交易。我開始這整個事情有點不對了和我很抱歉,我很着急。 我尋找繞過了「使用嚴格」的替代解決方案;事情。 @ankr –

+0

我不知道哪一部分,不會是嚴格模式兼容。你能提供錯誤信息嗎? – ankr

相關問題