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 相关文章推荐
JavaScript:Div层拖动效果实例代码
Aug 06 Javascript
node.js中的buffer.write方法使用说明
Dec 10 Javascript
JavaScript中常用的六种互动方法示例
Mar 13 Javascript
Node.js巧妙实现Web应用代码热更新
Oct 22 Javascript
js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)
Nov 09 Javascript
基于JavaScript实现文字超出部分隐藏
Feb 29 Javascript
Bootstrap3制作图片轮播效果
May 12 Javascript
快速解决js中window.location.href不工作的问题
Nov 02 Javascript
微信小程序 自动登陆PHP源码实例(源码下载)
May 08 Javascript
使用JS中的Replace()方法遇到的问题小结
Oct 20 Javascript
详解Vue中使用Axios拦截器
Apr 22 Javascript
vantUI 获得piker选中值的自定义ID操作
Nov 04 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 $_FILES函数详解
2011/03/09 PHP
php中{}大括号是什么意思
2013/12/01 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
Laravel如何使用数据库事务及捕获事务失败后的异常详解
2017/10/23 PHP
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
jQuery的初始化与对象构建之浅析
2011/04/12 Javascript
javascript框架设计读书笔记之种子模块
2014/12/02 Javascript
Javascript中的几种URL编码方法比较
2015/01/23 Javascript
深入浅出理解javaScript原型链
2015/05/09 Javascript
jQuery实现可展开合拢的手风琴面板菜单
2015/09/15 Javascript
AngularJS 过滤与排序详解及实例代码
2016/09/14 Javascript
webpack打包后直接访问页面图片路径错误的解决方法
2017/06/17 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
微信小程序合法域名配置方法
2019/05/06 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
解决echarts数据二次渲染不成功的问题
2020/07/20 Javascript
[02:20]DOTA2亚洲邀请赛 EHOME战队出场宣传片
2015/02/07 DOTA
python self,cls,decorator的理解
2009/07/13 Python
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
Tornado高并发处理方法实例代码
2018/01/15 Python
对django 模型 unique together的示例讲解
2019/08/06 Python
详解pyinstaller生成exe的闪退问题解决方案
2020/06/19 Python
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
泰国的头号网上婴儿用品店:Motherhood.co.th
2019/04/09 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
VC++笔试题
2014/10/13 面试题
四年大学自我鉴定
2014/02/17 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
物价局领导班子四风问题整改措施
2014/10/26 职场文书
教师考核评语大全
2014/12/31 职场文书
介绍信的格式
2015/01/30 职场文书
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python
输入框跟随文字内容适配宽实现示例
2022/08/14 Javascript
详解CSS3浏览器兼容
2022/12/24 HTML / CSS