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


Posted in Javascript onMarch 30, 2015

演示地址: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>

演示图片

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

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

Javascript 相关文章推荐
juqery 学习之五 文档处理 包裹、替换、删除、复制
Feb 11 Javascript
ajax处理php返回json数据的实例代码
Jan 24 Javascript
很好用的js日历算法详细代码
Mar 07 Javascript
javascript实现连续赋值
Aug 10 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
js计算时间差代码【包括计算,天,时,分,秒】
Apr 26 Javascript
微信小程序 canvas API详解及实例代码
Oct 08 Javascript
AngularJS创建自定义指令的方法详解
Nov 03 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
详解JavaScript调用栈、尾递归和手动优化
Jun 03 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
Mar 13 Javascript
javascript this指向相关问题及改变方法
Nov 19 Javascript
PHPMyAdmin导入时提示文件大小超出PHP限制的解决方法
Mar 30 #Javascript
浅谈类似于(function(){}).call()的js语句
Mar 30 #Javascript
jquery实现右键菜单插件
Mar 29 #Javascript
纯JavaScript实现的兼容各浏览器的添加和移除事件封装
Mar 28 #Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
Mar 28 #Javascript
JQuery调用绑定click事件的3种写法
Mar 28 #Javascript
对Web开发中前端框架与前端类库的一些思考
Mar 27 #Javascript
You might like
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
laravel-admin自动生成模块,及相关基础配置方法
2019/10/08 PHP
利用XMLHTTP传递参数在另一页面执行并刷新本页
2006/10/26 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
ExtJS自定义主题(theme)样式详解
2013/11/18 Javascript
页面实时更新时间的JS实例代码
2013/12/18 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
详解javascript跨浏览器事件处理程序
2016/03/27 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
使用InstantClick.js让页面提前加载200ms
2017/09/12 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
webpack-mvc 传统多页面组件化开发详解
2019/05/07 Javascript
用Node写一条配置环境的指令
2019/11/14 Javascript
基于Vue CSR的微前端实现方案实践
2020/05/27 Javascript
Vue+Element自定义纵向表格表头教程
2020/10/26 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
Python异常处理操作实例详解
2018/05/10 Python
Python3中函数参数传递方式实例详解
2019/05/05 Python
python实现PCA降维的示例详解
2020/02/24 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
业务员岗位职责
2013/11/16 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
小学优秀辅导员事迹材料
2014/05/11 职场文书
材料物理专业求职信
2014/09/01 职场文书
查摆剖析材料范文
2014/09/30 职场文书
滴水洞导游词
2015/02/10 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
2016公司年会主持词
2015/07/01 职场文书
2015初中政教处工作总结
2015/07/21 职场文书
2016年大学生就业指导课心得体会
2015/10/09 职场文书
CSS 使用 resize 实现图片拖拽切换预览功能(强大功能)
2021/08/23 HTML / CSS
win10如何更改appdata文件夹的默认位置?
2022/07/15 数码科技