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 相关文章推荐
JS实现侧悬浮浮动实例代码
Nov 29 Javascript
JS window对象的top、parent、opener含义介绍
Dec 03 Javascript
jQuery无刷新上传之uploadify3.1简单使用
Jun 18 Javascript
BootStrap的select2既可以查询又可以输入的实现代码
Feb 17 Javascript
javascript 使用正则test( )第一次是 true,第二次是false
Feb 22 Javascript
对Vue- 动态元素属性及v-bind和v-model的区别详解
Aug 27 Javascript
jQuery扩展方法实现Form表单与Json互相转换的实例代码
Sep 05 jQuery
webpack配置proxyTable时pathRewrite无效的解决方法
Dec 13 Javascript
vue+element实现打印页面功能
May 20 Javascript
微信小程序如何调用图片接口API并居中显示
Jun 29 Javascript
详解Vue 项目中的几个实用组件(ts)
Oct 29 Javascript
Javascript查看大图功能代码实现
May 07 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
通过html表格发电子邮件
2006/10/09 PHP
php xml留言板 xml存储数据的简单例子
2009/08/24 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
2016/05/28 PHP
详细解读php的命名空间(二)
2018/02/21 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
php面向对象重点知识分享
2019/09/27 PHP
php多进程并发编程防止出现僵尸进程的方法分析
2020/02/28 PHP
javascript 写类方式之九
2009/07/05 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
jQuery技巧大放送 学习jquery的朋友可以看下
2009/10/14 Javascript
jquery实现table鼠标经过变色代码
2013/09/25 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
百度地图给map添加右键菜单(判断是否为marker)
2016/03/04 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
vue实现图片滚动的示例代码(类似走马灯效果)
2018/03/03 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
js简单实现自动生成表格功能示例
2020/06/02 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
[01:04:30]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Pyramid添加Middleware的方法实例
2013/11/27 Python
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
Python 类与元类的深度挖掘 II【经验】
2016/05/06 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
2018/02/11 Python
对Python 除法负数取商的取整方式详解
2018/12/12 Python
python pandas cumsum求累计次数的用法
2019/07/29 Python
python实现图片横向和纵向拼接
2020/03/05 Python
flask项目集成swagger的方法
2020/12/09 Python
佛罗里达州印第安河新鲜水果:Hale Groves
2017/02/20 全球购物
光声世纪笔试题目
2012/08/25 面试题
竞聘演讲稿
2014/04/24 职场文书
班级旅游计划书
2014/05/03 职场文书
高一军训感想
2015/08/07 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书