JavaScript+html5 canvas绘制的小人效果


Posted in Javascript onJanuary 27, 2016

本文实例讲述了JavaScript+html5 canvas绘制的小人效果。分享给大家供大家参考,具体如下:

运行效果截图如下:

JavaScript+html5 canvas绘制的小人效果

index.html代码如下:

<!DOCTYPE html>
<html>
 <head>
  <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
  <title>canvas中的缩放</title>
  <style type="text/css">
   #canvas {
    background:black; margin-top:100px; margin-left:200px;
   }
  </style>
 </head>
 <body>
  <canvas id="canvas" width="500px" height="500px" ></canvas>
 </body>
 <script type="text/javascript" src="canvas.js"></script>
 <script type="text/javascript">
  cache = {};
  var offsetX = 50,
   offsetY = 20;
  cache.context = dyl.createContext('canvas');
  dyl.rect(dyl.createColor(), 60 + offsetX, 0 + offsetY, 185, 100);
  dyl.rect(dyl.createColor(), 100 + offsetX, 100 + offsetY, 100, 50);
  dyl.rect(dyl.createColor(), 20 + offsetX, 150 + offsetY, 260, 200);
  dyl.rect(dyl.createColor(), 80 + offsetX, 350 + offsetY, 30, 110);
  dyl.rect(dyl.createColor(), 190 + offsetX, 350 + offsetY, 30, 110);
  dyl.circle(dyl.createColor(), 115 + offsetX, 55, 20);
  dyl.circle(dyl.createColor(), 190 + offsetX, 55, 20);
 </script>
</html>

canvas.js代码如下:

(function() {
  var dyl = {cache: {}};
  dyl.setContext = function(context) {
    dyl.cache._context = context;
    return context;
  }
  dyl.getDom = function(id) {
    return document.getElementById(id);
  }
  dyl._getContext = function() {
    return dyl.cache._context;
  }
  dyl.save = function() {
    var context = dyl._getContext();
    context ? context.save() : void(0);
  }
  dyl.restore = function() {
    var context = dyl._getContext();
    context ? context.restore() : void(0);
  }
  dyl.createContext = function(canvasID) {
    var canvas = this.getDom(canvasID);
    if(!canvas) {
      return null;
    }
    return dyl.setContext(canvas.getContext("2d"));
  }
  dyl.createColor = function() {
    var color = "rgb(";
    color += Math.round(Math.random()*255);
    color += ",";
    color += Math.round(Math.random()*255);
    color += ",";
    color += Math.round(Math.random()*255);
    color += ")";
    return color;
  };
  dyl.addImg = function(img, x, y) {
    var context = dyl._getContext();
    if(!img || !context) {
      return;
    }
    if(typeof img === "string") {
      var oImg = new Image();
      oImg.src = img;
      oImg.onload = function() {
        context.drawImage(oImg, x, y);
      }
      return;
    } 
    context.drawImage(img, x, y);
  };
  dyl.rect = function(color, x, y, width, height) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    context.fillStyle = color;
    context.fillRect(x, y, width, height);
  };
  dyl.circle = function(color, x, y, r) {
    var context = dyl._getContext();
    context.save();
    context.fillStyle = color;
    context.beginPath();
    context.arc(x, y, r, 0, 2*Math.PI);
    context.fill();
    context.stroke();
  };
  dyl.scale = function(x, y) {
    var context = dyl._getContext();
    if(!context) {
      return;
    }
    x = x ? x : 1;
    y = y ? y : 1;
    context.scale(x, y);
  };
  if(!window.dyl) {
    window.dyl = dyl;
  }
})();

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
如何简单地用YUI做JavaScript动画
Mar 10 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
Nov 28 Javascript
jQuery中outerHeight()方法用法实例
Jan 19 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
Mar 11 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
Sep 21 Javascript
浅谈js script标签中的预解析
Dec 30 Javascript
jQuery实现给input绑定回车事件的方法
Feb 09 Javascript
JS实现的简单拖拽功能示例
Mar 13 Javascript
Vue中的$set的使用实例代码
Oct 08 Javascript
JavaScript中.min.js和.js文件的区别讲解
Feb 13 Javascript
mpvue微信小程序开发之实现一个弹幕评论
Nov 24 Javascript
Nuxt 嵌套路由nuxt-child组件用法(父子页面组件的传值)
Nov 05 Javascript
jquery ajax分页插件的简单实现
Jan 27 #Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
Jan 27 #Javascript
APP中javascript+css3实现下拉刷新效果
Jan 27 #Javascript
jQuery EasyUi实战教程之布局篇
Jan 26 #Javascript
jQuery Easyui实现左右布局
Jan 26 #Javascript
AngualrJS中的Directive制作一个菜单
Jan 26 #Javascript
js实现网页图片延时加载 提升网页打开速度
Jan 26 #Javascript
You might like
php字符串截取问题
2006/11/28 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
PHP实现在数据库百万条数据中随机获取20条记录的方法
2017/04/19 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
50个优秀经典PHP算法大集合 附源码
2020/08/26 PHP
利用javascript查看html源文件
2006/11/08 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
判断文档离浏览器顶部的距离的方法
2014/01/08 Javascript
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
JavaScript是如何实现继承的(六种方式)
2016/03/31 Javascript
移动端效果之IndexList详解
2017/10/20 Javascript
解决webpack+Vue引入iView找不到字体文件的问题
2018/09/28 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
Koa日志中间件封装开发详解
2019/03/09 Javascript
微信小程序实现图片选择并预览功能
2019/07/25 Javascript
Vue设置长时间未操作登录自动到期返回登录页
2020/01/22 Javascript
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
python删除列表内容
2015/08/04 Python
python多线程socket编程之多客户端接入
2017/09/12 Python
详谈python read readline readlines的区别
2017/09/22 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
Python文件操作函数用法实例详解
2019/12/24 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
美国领先的商务贺卡出版商:The Gallery Collection
2018/02/13 全球购物
联欢晚会主持词
2014/03/25 职场文书
单位工作证明书格式
2014/10/04 职场文书
2014年营销工作总结
2014/11/22 职场文书
党员干部廉洁自律承诺书
2015/04/28 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
我的生日感言
2015/08/03 职场文书
用Python selenium实现淘宝抢单机器人
2021/06/18 Python
php修改word的实例方法
2021/11/17 PHP