2016-07-16 10 views
1

こんにちは、私はHTML5キャンバスを使用して描画アプリケーションを行う方法を学ぼうとしています これは今までこのコードを書いていました。jqueryを使用して未定義のプロパティ 'clientX'を読み取ることができません

var canvas; 
var context; 


function getMousePos(e) { 
    var canBoundX = canvas.offsetLeft; 
    var canBoundY = canvas.offsetTop; 
    var x = e.clientX - canBoundX, 
     y = e.clientY - canBoundY; 

    return {x: x, y: y}; 
} 


function drag_click() { 
    console.log(getMousePos()); 
} 

function drag() { 
    console.log(getMousePos()); 
} 

function drag_stop() { 
    console.log(getMousePos()); 
} 

function draw() { 
    canvas = $("#mainCanvas")[0]; 
    context = canvas.getContext('2d'); 
    context.strokeStyle = "#000"; 
    context.lineWidth = 4; 
    context.lineCap = "round"; 

    $(canvas).mousedown(function (e) { 
     drag_click(); 
    }); 
    $(canvas).mousemove(function (e) { 
     drag(); 
    }); 
    $(canvas).mouseup(function (e) { 
     drag_stop(); 
    }); 
} 


$(document).ready(draw()); 

答えて

2

あなたが機能draw_clickdrawdraw_stop、また機能get_mouse_pos内で引数eを渡す必要があります。ここに

もちろん

の未定義のプロパティ「clientX」を読んで、私が使用していますjqueryのは、JSコードです。引数を渡さない場合、関数 get_mouse_pos変数 eundefinedです。

var canvas; 
var context; 


function getMousePos(e) { 
    var canBoundX = canvas.offsetLeft; 
    var canBoundY = canvas.offsetTop; 
    var x = e.clientX - canBoundX, 
     y = e.clientY - canBoundY; 

    return {x: x, y: y}; 
} 


function drag_click(e) { 
    console.log(getMousePos(e)); 
} 

function drag(e) { 
    console.log(getMousePos(e)); 
} 

function drag_stop(e) { 
    console.log(getMousePos(e)); 
} 

function draw() { 
    canvas = $("#mainCanvas")[0]; 
    context = canvas.getContext('2d'); 
    context.strokeStyle = "#000"; 
    context.lineWidth = 4; 
    context.lineCap = "round"; 

    $(canvas).mousedown(function (e) { 
     drag_click(e); 
    }); 
    $(canvas).mousemove(function (e) { 
     drag(e); 
    }); 
    $(canvas).mouseup(function (e) { 
     drag_stop(e); 
    }); 
} 


$(document).ready(draw()); 
+0

私は前に、すべての機能に、電子を通過し、まだ​​それが仕事と揃え再びと動作しませんでしたdidin't、それはjQueryと、それは私だけではないことができ、イベントを処理する方法に関係しています確信していますそれを理解する –

+0

@ J.Duo。私はまだ引数が正しく渡されたかどうかはわかりません。コードをコピーして貼り付けてみてください。 –

+0

コピー貼り付けがうまくいきました。このようなものを紛失してしまったので、恥ずかしいですが、再び起こることは決してありません。D –

関連する問題