html5 isPointInPath相关操作
<body> <canvas id="c1" width="400" height="400"> </canvas> <script type="text/javascript"> var oC = document.getElementById("c1"); var oGC = oC.getContext("2d"); var c1 = new Shape(100, 100, 50); var c2 = new Shape(200, 200, 50); oC.onmousedown = function (ev) { var ev = ev || window.event; var point = { x: ev.clientX - oC.offsetLeft, y: ev.clientY - oC.offsetTop }; c1.reDraw(point); c2.reDraw(point); } c1.click = function () { alert(123); } c2.click = function () { alert(456); } function Shape(x, y, r) { this.x = x; this.y = y; this.r = r; oGC.beginPath(); oGC.arc(x, y, r, 0, 360 * Math.PI / 180,false); oGC.closePath(); oGC.fill(); } Shape.prototype.reDraw = function (point) { oGC.beginPath(); oGC.arc(this.x, this.y, this.r, 0, 360 * Math.PI / 180, false); oGC.closePath(); oGC.fill(); if (oGC.isPointInPath(point.x, point.y)) { this.click(); } } </script> </body>
使用习惯了html中的click等事件,用isPointInPath()这个方法感觉还是很不方便,有没有像jquery那样的方便链式操作,答案是有,有人已经把canvas的事件操作封装成库,这就是jCanvasScript.js。