原生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 相关文章推荐
JavaScript 面向对象的 私有成员和公开成员
May 13 Javascript
JavaScript常用对象的方法和属性小结
Jan 24 Javascript
node.js chat程序如何实现Ajax long-polling长链接刷新模式
Mar 13 Javascript
jquery+html5制作超酷的圆盘时钟表
Apr 14 Javascript
关于动态执行代码(js的Eval)实例详解
Aug 15 Javascript
详解webpack和webpack-simple中如何引入css文件
Jun 28 Javascript
webpack-mvc 传统多页面组件化开发详解
May 07 Javascript
JavaScript实现多张图片放大镜效果示例【不限定图片尺寸,rem单位】
May 14 Javascript
vue+element实现打印页面功能
May 20 Javascript
js字符串类型String常用操作实例总结
Jul 05 Javascript
详解使用WebPack搭建React开发环境
Aug 06 Javascript
关于better-scroll插件的无法滑动bug(2021通过插件解决)
Mar 01 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支付宝当面付2.0代码
2018/12/21 PHP
Javascript MD4
2006/12/20 Javascript
jQuery仿京东商城楼梯式导航定位菜单
2016/07/25 Javascript
Vue数据驱动模拟实现5
2017/01/13 Javascript
常用的js方法合集
2017/03/10 Javascript
简单的Vue SSR的示例代码
2018/01/12 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
javascript标准库(js的标准内置对象)总结
2018/05/26 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
微信小程序学习笔记之函数定义、页面渲染图文详解
2019/03/28 Javascript
详解用async/await来处理异步
2019/08/28 Javascript
JS计算斐波拉切代码实例
2019/09/12 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
2019/11/21 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
python动态加载变量示例分享
2014/02/17 Python
Python实现的监测服务器硬盘使用率脚本分享
2014/11/07 Python
11月编程语言排行榜 Python逆袭C#上升到第4
2017/11/15 Python
python爬虫系列Selenium定向爬取虎扑篮球图片详解
2017/11/15 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
使用Python代码实现Linux中的ls遍历目录命令的实例代码
2019/09/07 Python
Python全栈之列表数据类型详解
2019/10/01 Python
pip 安装库比较慢的解决方法(国内镜像)
2019/10/06 Python
Python argparse模块应用实例解析
2019/11/15 Python
python数据化运营的重要意义
2019/11/25 Python
Python类成员继承重写的实现
2020/09/16 Python
基于Python制作一副扑克牌过程详解
2020/10/19 Python
python实现录制全屏和选择区域录屏功能
2021/02/05 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
HTML5本地存储和本地数据库实例详解
2017/09/05 HTML / CSS
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
打架检讨书500字
2014/01/29 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
Oracle使用别名的好处
2022/04/19 Oracle