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 相关文章推荐
jQuery 源代码显示控件 (Ajax加载方式).
May 18 Javascript
JQuery index()方法使用代码
Jun 02 Javascript
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
JQuery实现的图文自动轮播效果插件
Jun 19 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
JS+CSS实现仿雅虎另类滑动门切换效果
Oct 13 Javascript
jQuery插件echarts去掉垂直网格线用法示例
Mar 03 Javascript
详解微信小程序调用支付接口支付
Apr 28 Javascript
微信小程序人脸识别功能代码实例
May 07 Javascript
通过实例讲解JS如何防抖动
Jun 15 Javascript
jQuery实现弹幕特效
Nov 29 jQuery
基于原生js实现九宫格算法代码实例
Jul 03 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
ip签名探针
2006/10/09 PHP
php 代码优化的42条建议 推荐
2009/09/25 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
LINUX下PHP程序实现WORD文件转化为PDF文件的方法
2016/05/13 PHP
PDO::inTransaction讲解
2019/01/28 PHP
基于jQuery的前端数据通用验证库
2011/08/08 Javascript
namespace.js Javascript的命名空间库
2011/10/11 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
jquery实现两边飘浮可关闭的对联广告
2015/11/27 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
2016/03/24 Javascript
使用Script元素发送JSONP请求的方法
2016/06/12 Javascript
javascript数据结构之串的概念与用法分析
2017/04/12 Javascript
JavaScript 巧学巧用
2017/05/23 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
React Native 通告消息竖向轮播组件的封装
2020/08/25 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
Vue中父子组件通讯之todolist组件功能开发
2018/05/21 Javascript
QRCode.js二维码生成并能长按识别
2018/10/16 Javascript
vue+elementUI 复杂表单的验证、数据提交方案问题
2019/06/24 Javascript
javaScript把其它类型转换为Number类型
2019/10/13 Javascript
Vue实现base64编码图片间的切换功能
2019/12/04 Javascript
详解在Vue.js编写更好的v-for循环的6种技巧
2020/04/14 Javascript
ES6新增的数组知识实例小结
2020/05/23 Javascript
使用cx_freeze把python打包exe示例
2014/01/24 Python
Python使用multiprocessing创建进程的方法
2015/06/04 Python
python实现树形打印目录结构
2018/03/29 Python
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
好邻里事迹材料
2014/01/16 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
安全施工责任书
2014/08/25 职场文书
出租房屋协议书
2014/09/14 职场文书
端午节寄语2015
2015/03/23 职场文书