• [ javascript canvas isPointInPath(x,y) 判断点是否在最后绘制的图形中 ] javascript canvas isPointInPath(x,y) 判断点是否在最后绘制的图形中方法演示 效果之三


     1 <!DOCTYPE html>
     2 <html lang='zh-cn'>
     3 <head>
     4 <title>Insert you title</title>
     5 <meta name='description' content='this is my page'>
     6 <meta name='keywords' content='keyword1,keyword2,keyword3'>
     7 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     8 <link rel='stylesheet' type='text/css' href='./css/index.css' />
     9 <script type='text/javascript' src='./js/jquery-1.12.1.min.js'></script>
    10 <style type='text/css'>
    11 html,body,img,canvas {
    12     margin: 0; padding: 0;
    13 }
    14 
    15 html {
    16     height: 100%;
    17 }
    18 
    19 body {
    20     background: #000;
    21 }
    22 
    23 #can {
    24     background: #FFF; display: block; margin: 25px auto; border-radius: 2px;
    25 }
    26 </style>
    27 <script type='text/javascript'>
    28     $( function(){
    29         var can = $( '#can' ).get( 0 );
    30         var oCan = can.getContext( '2d' );
    31         oCan.fillStyle = getRandomColor();
    32         oCan.beginPath();
    33         oCan.fillRect( 20 , 50 , 100 , 100 );    /* 如果只使用一个大的开始及闭合路径来包裹多个图形,如果使用这种方式来绘制,那么也只是在点击最后一个使用40 41行间代码 绘制的图形有效果*/
    34         oCan.fillStyle = getRandomColor();
    35         //oCan.fillRect(200 , 150 , 100 , 100);    /* 直接使用这种方式来使用oCan.isPointInPath(x,y)判断是无效的,无论点击哪里都是无效的 返回false */
    36         oCan.rect( 200 , 150 , 100 , 100 );/* 要想使用 oCan.isPointInPath(x,y)来判断就必须结合使用 37 38 行间代码,否则无效 */
    37         oCan.fill();
    38         oCan.closePath();
    39 
    40         can.onmousedown = function( ev ){
    41             var ev = window.event || ev;
    42             var clientX = ev.clientX - this.offsetLeft;
    43             var clientY = ev.clientY - this.offsetTop;
    44             if( oCan.isPointInPath( clientX , clientY ) == 1 /*用于判断在当前路径中是否包含检测点的方法,只检测我们最后绘制出来的图形*/
    45                             || oCan.isPointInPath( clientX , clientY ) == true
    46                             || oCan.isPointInPath() ){ /* 在不同的浏览器中对于布尔值的显示不同 推荐直接使用最后一种方式来进行判断,因为 这是JS中对于布尔值的判断机制 (非0的数值,非空字符串,true均被认为真的)*/
    47                 alert( '点击的是在我们最后绘制的图形中...' );
    48             }
    49         };
    50 
    51         function getRandomColor(){
    52             var num = '0xFFFFFF';
    53             var len = Math.ceil( Math.random() * parseInt( num , 16 ) ).toString( 16 );
    54             if( length < 6 ){
    55                 for( var i = 0 ; i < 6 - len.length ; i++ ){
    56                     len += '0';
    57                 }
    58             }
    59             return '#' + len;
    60         }
    61     } );
    62 </script>
    63 </head>
    64 <body>
    65     <canvas id='can' width='500' height='450'>检测到您的浏览器版本过低,请升级您的浏览器,以获取更好的体验效果...</canvas>
    66 </body>
    67 </html>
  • 相关阅读:
    第五十四天:jQuery内容的基础:
    第五十三天dom基础
    第五十二天js的&#183;进阶
    第五十一天js的基础
    第四十九天css进阶
    第四十八天 html中的form和css基础
    第四十七天:web中德html初级:
    第42天IO模块
    第四十一天:协程操作
    第四十天线程的进阶
  • 原文地址:https://www.cnblogs.com/mysearchblog/p/5959894.html
Copyright © 2020-2023  润新知