Javascript:Canvas的小球碰壁反弹

(萌新),我今天在网上看了看如何在Canvas画布上做出小球碰壁反弹的效果,然后自己试做一下,感觉良好,不知道还有什么需要改良。

首先我的思路是:

1.在body创建一个canvas标签,设置宽:500px,高:500px,id:“canvas”

2.在script标签获取canvas标签,获取上下文,然后开始画个圆圈(小球)。

3.小球运动需要有上下两个方向,定义 x和y ;也需要两个速度, 定义 speedX 和 speedY。

4.方向定义好后,加个定时器然小球运动,当小球移动的方向超过(Canvas的自身高度-小球的半径)或者小球移动的方向小于自身半径的时候,就会碰壁反弹。

5.小球运动之前先把画布全部清掉在运动。

好了,思路弄好之后就开始写代码了。

1.创建一个canvas

<body>

    <canvas id="canvas" width = "500" height = "500" style = "border :1px solid black"> </canvas>

</body>

2.获取canvas标签,获取上下文,画小球

<script>

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

      var ctx = canvas.getContext('2d');//获取上下文(2d绘制)

      var x = 0; var y = 0;//设置小球的方向

     var speedX = 1; var speedY = 2; //给小球一个初始速度(如果给0的话会不动的,因为我试过,哈哈哈)。

     function Ball(){    //(把小球放到一个函数里方便调用)

        ctx.beginPath();

        ctx.arc(100+x,100+y,50,0,2*Math.PI,false);   //小球的移动的距离随着 x , y 的增加而增加

        ctx.stroke();

       ctx.closePath();

     }

      Ball();

     setInterval(function(){

       ctx.clearRect(0,0,canvas.width,canvas.height);//重绘 清除画布

       x+=speedX;  y+=speedY;

//当小球移动的方向超过(Canvas的自身高度-小球的半径)或者小球移动的方向小于自身半径的时候,就会碰壁反弹。

      if(100+x > canvas.width - 50){   

            speedX = -speedX;

       }else if(100+x < 50){

            speedX = -speedX;

        }

        if(100+y > canvas.height - 50){

            speedY = -speedY;

        }else if(100+y < 50){

            speedY = -speedY;

        }

             Ball();

     },10)

</script>


嗯嗯,这样就大功告成了。

来自萌新的分享。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    J_L_L阅读 1,669评论 0 4
  • 知乎的网页版登录界面的背景有很多运动的小球,小球和小球运动的时候之间还有连线,给人一种三维立体变换的效果,看着十分...
    小厨笔记阅读 928评论 0 5
  • 一:canvas简介 1.1什么是canvas? ①:canvas是HTML5提供的一种新标签 ②:HTML5 ...
    GreenHand1阅读 4,874评论 2 32
  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    Looog阅读 4,032评论 3 40
  • 各类主题综艺不停地向大众传送着一个主题:高手在民间,《最强大脑》《挑战不可能》以及最近刷屏趋势略缓的《诗词大会》之...
    420_c644阅读 333评论 0 0

友情链接更多精彩内容