在edge打开没有问题,在旁边这个自动运行有问题

来源:8-2 编程练习

Ting111

2020-07-07 10:51:19

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>canvas动画</title>

    <style>

        canvas{background-color:lightblue;}

    </style>

</head>

<body>

    <canvas width="800px" height="800px" id="canvas">您的浏览器不支持canvas</canvas>

    <script>

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

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

        //补充代码

        

        var x=100,y=0,d=1;

        setInterval(function(){

             y+=10*d;

            cc.clearRect(100,0,canvas.width,canvas.height);

            cc.fillStyle='green';

            cc.fillRect(x,y,100,100);

            if(y+100>=canvas.height){

                d=-1;

            }else if(y<canvas.height){

                d=1;

            }

        },500)

         

    </script>

</body>

</html>


写回答

3回答

好帮手慕久久

2020-07-07

同学你好,老师在edge上测试,绿色的方框运动到底部后,也会在底部反复上下移动,和在线编辑器的表现一样。原因是else if的条件书写不正确,如下:

初始时,方框向下运动,当y满足if的条件时,y=700,然后d变成了“-1”;下一刻,根据“y+=10*d;”得到y=690,视觉上,方框向上运动了一下,此时y满足else if的条件,d又等于“1”了,所以下一刻,根据“y+=10*d;”,y=700,视觉上方框又向下运动了一下,依此反复。

可将else if的条件修改成如下:

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

由于edge浏览器的版本不同,可能出现同学那里可以正常运行的情况。

建议同学换成谷歌浏览器测试,该浏览器是程序员使用特别多的浏览器,性能兼容性都比较好些。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

0
hing111
h 刚才我改成0这个框也上不去,现在可以了,但是我不明白条件是小于画布和小于0有什么区别
h020-07-07
共1条回复

Ting111

提问者

2020-07-07

今天网站是不是出问题了,打不开视频

0

好帮手慕久久

2020-07-07

同学你好,修改js代码后,需要多刷新几遍页面,防止由于浏览器有缓存,页面无法及时更新。

老师已经在上一次的讲解中,给你讲了为什么写成y < canvas.height会出现反复的现象,同学再好好看一下。当写成y<=0时,意思是方块运动到顶部后,再更换运动方向(y是方框距离画布顶部的距离),同学结合之前的讲解和下图,再体会一下。

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

祝学习愉快!

0

0 学习 · 6815 问题

查看课程