canvas-a10isPointPath.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <canvas id="canvas" style="margin:0 auto;border:1px #ddd solid"> The current browser does not support Canvas, can replace the browser a try! </canvas> <script> var canvas = document.getElementById('canvas'); var context = canvas.getContext('2d'); var balls = []; window.onload = function(){ // var canvas = document.getElementById('canvas'); canvas.width = 1024; canvas.height = 768; if(canvas.getContext('2d')){ // var context = canvas.getContext('2d'); for(var i=0;i<10;i++){ var aBall = { x : Math.random()*canvas.width, y : Math.random()*canvas.height, r : Math.random()*50+20 }; balls[i] = aBall; } draw(); canvas.addEventListener("mouseup",detect); }else{ alert('当前游览器不支持Canvas,请更换游览器后再试!'); } } function draw(){ for(var i = 0;i<balls.length;i++){ context.beginPath(); context.arc(balls[i].x,balls[i].y,balls[i].r,0,Math.PI*2); context.fillStyle = "#058"; context.fill(); } } function detect(event){ var x = event.clientX - canvas.getBoundingClientRect().left; var y = event.clientY - canvas.getBoundingClientRect().top; for(var i=0;i<balls.length;i++){ context.beginPath(); context.arc(balls[i].x,balls[i].y,balls[i].r,0,Math.PI*2); if(context.isPointInPath(x,y)){ context.fillStyle = "red"; context.fill(); } } } </script> </body> <script> /*总结 //判断事件是不是在canvas内 context.isPointInPath(x,y) */ </script> </html>