鼠标移到上面不能停止

来源:8-1 Canvas动画

慕粉1905369247

2020-05-15 17:00:33

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8" />

    <title>Document</title>

    <style>

        canvas{background-color:lightblue;}

    </style>

</head>

<body>

    <canvas id="canvas" width="300px" height="300px">

        您的浏览器不支持canvas

    </canvas>

    <script>

        var canvas=document.getElementById("canvas");

        var ctx=canvas.getContext("2d");




        var posX=0,posY=0,dir=1,isMouse=false

        //绑定鼠标事件

        canvas.onmousemove=function(e){

            var mouseX=e.offsetX

            var mouseY=e.offsetX

            // 鼠标大于左边界 小于右边界

            if(mouseX>posX&&mouseY<posX&&mouseY>posY+50&&mouseY<posY+50){

                isMouse=true

            }else{

                isMouse=false

            }

        }


        setInterval(function () {

            if(!isMouse){

                console.log(isMouse)

                 posX+=10*dir


            }

           


            ctx.clearRect(0,0,canvas.width,canvas.height)

            ctx.fillRect(posX,posY,50,50)

            if(posX>=canvas.width||posY>=canvas.width+50){


                dir=-1

            }else if(posX<=0||posY<=0){

                dir=1

            }

        },200)



    </script>

</body>

</html>


写回答

2回答

好帮手慕码

2020-05-15

同学你好,问题如下:

(1)y轴获取的不对;

(2)判断条件错误;

http://img.mukewang.com/climg/5ebe62f30934ea2a08300137.jpg

可以再测试一下,祝学习愉快~

0

慕粉1905369247

提问者

2020-05-15

用这个代码


<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8" />

    <title>Document</title>

    <style>

        canvas{background-color:lightblue;}

    </style>

</head>

<body>

    <canvas id="canvas" width="300px" height="300px">

        您的浏览器不支持canvas

    </canvas>

    <script>

        var canvas=document.getElementById("canvas");

        var ctx=canvas.getContext("2d");




        var posX=0,posY=0,dir=1,isMouse=false

        //绑定鼠标事件

        canvas.onmousemove=function(e){

            var mouseX=e.offsetX

            var mouseY=e.offsetX

            if(mouseX>posX&&mouseY<posX&&mouseY>posY+50&&mouseY<posY+50){

                isMouse=true

            }else{

                isMouse=false

            }

        }


        setInterval(function () {

            if(!isMouse){

                console.log(isMouse)

                 posX+=10*dir

            }

           

            ctx.clearRect(0,0,canvas.width,canvas.height)

            ctx.fillRect(posX,posY,50,50)

            if(posX+50>=canvas.width){

                dir=-1

            }else if(posX<=0){

                dir=1

            }

        },200)



    </script>

</body>

</html>


0

0 学习 · 6815 问题

查看课程