原生js结合html5制作小飞龙的简易跳球

 更新时间:2015年03月30日 09:47:15   投稿:hebedich  
这篇文章主要介绍了原生js结合html5制作小飞龙的简易跳球的方法和代码分享,推荐给大家,有需要的小伙伴可以参考下。

演示地址:http://runjs.cn/detail/yjpvqhal

html代码

<html>
  <head>
    <meta charset="utf-8"/>
    <title>小飞龙的跳球</title>
  </head>
  <body onload="init()">
    <canvas id="game" width="400" height="400" style="border:1px solid #c3c3c3">
      你的游览器不支持html5的画布元素,请升级到IE9+或使用firefox、chrome这类高级的智能游览器!
    </canvas>
    <script>
      var canvas = document.getElementById('game');
      var ctx = canvas.getContext('2d');
      var grad;
      //盒子的起始位置和大小以及球的半径
      var box = {x:20,y:20,w:350,h:350,r:20};
      //球的中心位置和偏移位置
      var inbox = {//box内的限制范围
          bx:(box.w+box.x-box.r),
          by:(box.h+box.y-box.r),
          ix:box.x+(box.r*2),
          iy:box.y+(box.r*2)
        };
      //球的初始位置和变化位置  
      var ball = {x:50,y:50,vx:4,vy:8};
      var img = new Image();
      img.src = 'images/qiuqiu.png';
      var hue = [[255,0,0],[255,255,0],[0,255,0],[0,255,255],[0,0,255],[255,0,0]];
      function init(){
        grad = ctx.createLinearGradient(box.x,box.y,box.w,box.h);
        for(var i=0;i<hue.length;i++){
          var color = 'rgb('+hue[i][0]+','+hue[i][1]+','+hue[i][2]+')';
          grad.addColorStop(i/hue.length,color);
        }
        ctx.lineWidth = box.r;
        ctx.fillStyle = 'rgb(200,0,50)';
        ctx.fillStyle = grad;
        moveBall();
        setInterval(moveBall,50);
      }  
      //碰撞检测并重新确定球的位置
      function moveBallEndCheck(){
        var nx = ball.x + ball.vx;
        var ny = ball.y + ball.vy;
        if(nx > inbox.bx){//当前x大于上边框边界
          ball.vx = -ball.vx;//球的变化x坐标当前当前变化x坐标的负数
          nx = inbox.bx;//当前位置为上边框的位置
        }
        if(nx < inbox.ix){//当前位置小于下边框
          nx = inbox.ix;//当前位置为下边框的x
          ball.vx = -ball.vx;//球的变化x坐标翻转取负
        }
        if(ny > inbox.by){
          ny = inbox.by;
          ball.vy = -ball.vy;
        }
        if(ny < inbox.iy){
          ny = inbox.iy;
          ball.vy = -ball.vy;
        }
        ball.x = nx;
        ball.y = ny;
      }
      function moveBall(){
        ctx.clearRect(box.x,box.y,box.w,box.h);
        moveBallEndCheck();
        ctx.beginPath();
        //console.log(ball.x+"\t"+ball.y+"\t"+ball.vx+"\t"+ball.vy+"\t"+(ball.x-box.r)+"\t"+(ball.y-box.r));
        ctx.drawImage(img,(ball.x-box.r),(ball.y-box.r));
        ctx.fillRect(box.x,box.y,box.r,box.h);
        ctx.fillRect((box.x+box.w-box.r),box.y,box.r,box.h);
        ctx.fillRect(box.x,box.y,box.w,box.r);
        ctx.fillRect(box.x,(box.y+box.h-box.r),box.w,box.r);
        ctx.closePath();
        ctx.fill();
      }
    </script>
  </body>
</html>

演示图片

以上所述就是本文的全部代码,希望大家能够喜欢。

相关文章

  • 微信小程序扫描普通二维码跳转到小程序指定页面操作方法

    微信小程序扫描普通二维码跳转到小程序指定页面操作方法

    这篇文章主要给大家介绍了关于微信小程序扫描普通二维码跳转到小程序指定页面操作的相关资料,为了分享方便,或者制作宣传海报之类的,经常需要用到微信小程序指定页面的二维码,让用户扫码直达页面,需要的朋友可以参考下
    2023-08-08
  • 微信小程序实现文字滚动

    微信小程序实现文字滚动

    这篇文章主要为大家详细介绍了微信小程序实现文字滚动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-03-03
  • javascript:window.open弹出窗口的位置问题

    javascript:window.open弹出窗口的位置问题

    这篇文章主要介绍了javascript:window.open弹出窗口的位置问题,需要的朋友可以参考下
    2014-03-03
  • js实现文件上传表单域美化特效

    js实现文件上传表单域美化特效

    本文为大家分享的是一款效果非常酷的文件上传表单域美化特效。有7种不同的美化文件上传域的效果,很时尚,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • JavaScript forEach的几种用法小结

    JavaScript forEach的几种用法小结

    forEach()是JavaScript中一个常用的方法,用于遍历数组或类数组对象中的每个元素,本文就来介绍一下JavaScript forEach的几种用法小结,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • 得到元素真实的背景颜色的js代码

    得到元素真实的背景颜色的js代码

    这个函数来自Rico,Longbill及Dnew.cn修改。 说明: 传入参数一个,为元素的id值或元素本身,返回为元素的真实背景色值(字符串)。背景值均为16进制的值(原代码是是IE里面返回的是16进制的值,而Mozilla则是rgb值,Dnew.cn将其修改为均返回16进制的值)。
    2007-12-12
  • 简单实现JS上传图片预览功能

    简单实现JS上传图片预览功能

    这篇文章主要为大家详细介绍了如何简单实现JS上传图片预览功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • js活用事件触发对象动作

    js活用事件触发对象动作

    现在基本上我很少在对象里面写事情触发行为了,因为感觉那样做相同的对象代码利用率太低,容易导致代码冗余.
    2008-08-08
  • JavaScript学习笔记之DOM基础 2.4

    JavaScript学习笔记之DOM基础 2.4

    DOM(Document Object Model),即“文档对象模型”。基于语义的逻辑结构,DOM将网页内的元素与内容呈现为一个清晰、易读的树状模型,下面小编把最近整理有关javascript笔记之DOM基础分享给大家,有需要的朋友可以参考下
    2015-08-08
  • javascript firefox兼容ie的dom方法脚本

    javascript firefox兼容ie的dom方法脚本

    js firefox下兼容ie的dom的实现方法小结。利用我们为了兼容多浏览器写出更好的效果代码
    2008-05-05

最新评论