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中eval函数的使用方法与示例
Apr 09 Javascript
基于jQuery的获得各种控件Value的方法
Nov 19 Javascript
Javascript 中 null、NaN和undefined的区别总结
Apr 10 Javascript
多种方法判断Javascript对象是否存在
Sep 22 Javascript
js格式化时间的方法
Dec 18 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
jquery精度计算代码 jquery指定精确小数位
Feb 06 Javascript
详解VUE中v-bind的基本用法
Jul 13 Javascript
理解 Node.js 事件驱动机制的原理
Aug 16 Javascript
浅谈AngularJS中$http服务的简单用法
May 15 Javascript
json数据传到前台并解析展示成列表的方法
Aug 06 Javascript
解决layer 动态加载select 失效的问题
Sep 18 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脚本的10个技巧(4)
2006/10/09 PHP
dedecms模版制作使用方法
2007/04/03 PHP
php 分页原理详解
2009/08/21 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
JQuery悬停控制图片轮播——代码简单
2015/08/05 Javascript
学习使用AngularJS文件上传控件
2016/02/16 Javascript
JS获取鼠标选中的文字
2016/08/10 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
JS中的两种数据类型及实现引用类型的深拷贝的方法
2018/08/12 Javascript
JS使用new操作符创建对象的方法分析
2019/05/30 Javascript
基于javascript实现日历功能原理及代码实例
2020/05/07 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
[01:35]2014DOTA2西雅图邀请赛 专访狐狸妈青春献给刀塔
2014/07/08 DOTA
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Python自定义线程类简单示例
2018/03/23 Python
Python实现序列化及csv文件读取
2020/01/19 Python
Python实现SMTP邮件发送
2020/06/16 Python
使用html5 canvas创建太空游戏的示例
2014/05/08 HTML / CSS
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
一些Unix笔试题和面试题
2013/01/22 面试题
幼儿教师个人求职信范文
2013/09/21 职场文书
会计电算化专业毕业生推荐信
2013/12/24 职场文书
创业者是否需要商业计划书?
2014/02/07 职场文书
负责人任命书范本
2014/06/04 职场文书
小学工作总结2015
2015/05/04 职场文书
婚宴致辞
2015/07/28 职场文书
tensorboard 可视化之localhost:6006不显示的解决方案
2021/05/22 Python
php解析非标准json、非规范json的方式实例
2022/05/10 PHP