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.query.js 取参数的两点问题分析
Aug 06 Javascript
javascript中clipboardData对象用法详解
May 13 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
Dec 09 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
Dec 24 Javascript
浅谈javascript中new操作符的原理
Jun 07 Javascript
js计算系统当前日期是星期几的方法
Jul 14 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
js oncontextmenu事件使用详解
Mar 25 Javascript
详谈AngularJs 控制器、数据绑定、作用域
Jul 09 Javascript
js实现移动端轮播图效果
Dec 09 Javascript
浅谈在node.js进入文件目录的问题
May 13 Javascript
vuex的使用和简易实现
Jan 07 Vue.js
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中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
PHP变量内存分配问题记录整理
2013/11/27 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
ThinkPHP下表单令牌错误与解决方法分析
2017/05/20 PHP
PHP实现的猴王算法(猴子选大王)示例
2018/04/30 PHP
javascript 使td内容不换行不撑开
2012/11/29 Javascript
js实现交换运动效果的方法
2015/04/10 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
JS实现焦点图轮播效果的方法详解
2016/12/19 Javascript
详解AngularJS通过ocLazyLoad实现动态(懒)加载模块和依赖
2017/03/01 Javascript
JS window对象简单操作完整示例
2020/01/14 Javascript
vue表单验证之禁止input输入框输入空格
2020/12/03 Vue.js
Vue+element-ui添加自定义右键菜单的方法示例
2020/12/08 Vue.js
各个系统下的Python解释器相关安装方法
2015/10/12 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
pyqt5 使用label控件实时显示时间的实例
2019/06/14 Python
pycharm不能运行.py文件的解决方法
2020/02/12 Python
python实现吃苹果小游戏
2020/03/21 Python
Python基于paramunittest模块实现excl参数化
2020/04/26 Python
Python如何创建装饰器时保留函数元信息
2020/08/07 Python
Django 实现图片上传和下载功能
2020/12/31 Python
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
缅甸网上购物:Shop.com.mm
2017/12/05 全球购物
保加利亚手表、香水、化妆品和珠宝购物网站:Brasty.bg
2020/04/22 全球购物
收银出纳员岗位职责
2014/02/23 职场文书
会议主持词
2014/03/17 职场文书
工会主席事迹材料
2014/06/03 职场文书
离退休人员聘用协议书
2014/11/24 职场文书
公司年会开场白
2015/06/01 职场文书
葬礼主持词
2015/07/02 职场文书
雨雪天气温馨提示
2015/07/15 职场文书
女方家长婚礼答谢词
2015/09/29 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
Win10本地连接不见了怎么恢复? win10系统电脑本地连接不见了解决方法
2023/01/09 数码科技