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。
浙公网安备 33010602011771号