原生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 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
解析javascript 浏览器关闭事件
Jul 08 Javascript
单击和双击事件的冲突处理示例代码
Apr 03 Javascript
Javascript 实现复制(Copy)动作方法大全
Jun 20 Javascript
jquery判断复选框是否选中进行答题提示特效
Dec 10 Javascript
javascript HTML+CSS实现经典橙色导航菜单
Feb 16 Javascript
jquery实现轮播图效果
Feb 13 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
May 15 jQuery
JS实现非首屏图片延迟加载的示例
Jan 06 Javascript
微信小程序实现收藏与取消收藏切换图片功能
Aug 03 Javascript
JSON生成Form表单的方法示例
Nov 21 Javascript
基于Vue中的父子传值问题解决
Jul 27 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
BBS(php &amp; mysql)完整版(四)
2006/10/09 PHP
第九节--绑定
2006/11/16 PHP
php socket方式提交的post详解
2008/07/19 PHP
PHP5 字符串处理函数大全
2010/03/23 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
php操作memcache缓存方法分享
2015/06/03 PHP
PHP闭包函数传参及使用外部变量的方法
2016/03/15 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
js中style.display=&quot;&quot;无效的解决方法
2014/10/30 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
textarea 在浏览器中固定大小和禁止拖动的实现方法
2016/12/03 Javascript
解析Vue2.0双向绑定实现原理
2017/02/23 Javascript
Vue报错:Uncaught TypeError: Cannot assign to read only property’exports‘ of object’#‘的解决方法
2017/06/17 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
简单了解JavaScript sort方法
2019/11/25 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
Python实现的简单算术游戏实例
2015/05/26 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
Python内置模块ConfigParser实现配置读写功能的方法
2018/02/12 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
浅析Python pandas模块输出每行中间省略号问题
2018/07/03 Python
pandas按照列的值排序(某一列或者多列)
2020/12/13 Python
CheapTickets香港机票预订网站:CheapTickets.hk
2019/06/26 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
质检部部长职责
2013/12/16 职场文书
4S店售后客服自我评价
2014/04/09 职场文书
大二学习计划书范文
2014/04/27 职场文书
会计毕业生自荐书
2014/06/12 职场文书
授权委托书样本
2014/09/25 职场文书
超市工作总结范文2014
2014/12/19 职场文书
小学教师岗位职责
2015/04/02 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
Docker部署Mysql8的实现步骤
2022/07/07 Servers