问答详情
源自:8-5 使用Canvas交互和isPointInPath

照着一模一样打的,找不出错那里/(ㄒoㄒ)/~~

        <canvas id="canvas" style="border:1px solid #aaa;display block;margin:50px auto;"></canvas>
        
        <script>
        var balls = [];
        var  canvas = document.getElementById("canvas");
        var context = canvas.getContext("2d");
        
        
            window.onload = function(){
                
                canvas.width = 800;
                canvas.height = 800;
                
                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 );
            }
            
            
            function draw(){
                
                for( var i = 0 ; i <=balls.length ; i++ ){
                    context.beginPath();
                    context.arc( balls[i].x , balls[i].y , balls[i].r , 0 , 2*Math.PI);
                    
                    context.fillStyle = "blueviolet";
                    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 , 2*Math.PI);
                    if( context.isPointInPath(x,y)){
                        context.fillStyle = "darkgreen";
                        context.fill();
                    
                    }`
                }
            } 
        </script>


提问者:qq_lzY 2016-04-02 18:09

个回答

  • lc9122
    2016-04-03 20:18:30
    已采纳

    四个错误:

    1. 第44行,getBoundingClientRect()拼写错误,“bound”的b是大写的

    2. detect和draw函数的for循环条件多了个“=”

    3. 第48行beginPath拼写错误

    4. 第54行的括号后面有个多余的符号。

    这些错误在浏览器上调试调试就可以发现问题的。

  • qq_lzY
    2016-04-05 19:27:13

    真的很感谢,不懂你的浏览器调试是啥,只能打开网页,然后查看元素,出现代码,但咋调试