function SpritCtx(img, size, pos, turnTime, totalCount, ctx) {
size = size || {};
pos = pos || {};
//img
this.img = img;
//size
this.width = size.width || 5;
this.height = size.height || 5;
//pos
this.left = pos.left || 0; //画布上的位置left
this.top = pos.top || 0; //画布上的位置top
//初始化cellNum,count,cell,row
this.cellNum = 1;
var that = this;
this.img.onload = function() {
that.cellNum = Math.floor(that.img.width / that.width); //每行的个数
}
this.count = 0; //显示第几个
this.cell = 0;
this.row = 0;
//定时器时间
this.turnTime = turnTime || 90;
//图片数量
this.totalCount = totalCount;
//canvas
this.ctx = ctx;
//定时器
this.xTimer = null;
} SpritCtx.prototype.draw = function() {
this.ctx.drawImage(
this.img,
this.width * this.cell,
this.height * this.row,
this.width,
this.height,
this.left,
this.top,
this.width,
this.height
);
return this;
}; SpritCtx.prototype.start = function() {
var that = this;
clearInterval(this.xTimer);
this.xTimer = setInterval(function () {
that.timerFn();
}, this.turnTime);
return this;
}; SpritCtx.prototype.stop = function() {
clearInterval(this.xTimer);
return this;
}; SpritCtx.prototype.timerFn = function() {
this.count++;
this.count %= this.totalCount;
this.row = Math.floor(this.count / this.cellNum); //第几行
this.cell = this.count - this.row * this.cellNum; //第几列
return this;
}; SpritCtx.prototype.turnPos = function(left, top) {
this.left = left || 0;
this.top = top || 0;
return this;
};

canvas sprite动画 简单封装的更多相关文章

  1. iOS开发UI篇—核心动画(UIView封装动画)

    iOS开发UI篇—核心动画(UIView封装动画) 一.UIView动画(首尾) 1.简单说明 UIKit直接将动画集成到UIView类中,当内部的一些属性发生改变时,UIView将为这些改变提供动画 ...

  2. [Unity3D]NGUI用Sprite动画和屏幕自适应做游戏开始场景

    我们在玩任何一款手游产品时,都是先上来个logo界面,游戏欢迎界面等,这就意味着我们要做一款游戏需要多个场景,场景之间来回切换实现游戏逻辑,unity也不例外,所以从本篇开始将会介绍如何搭建多个场景, ...

  3. Google图片加载库Glide的简单封装GlideUtils

    Google图片加载库Glide的简单封装GlideUtils 因为项目里用的Glide的地方比较多,所有简单的封装了以下,其实也没什么,就是写了个工具类,但是还是要把基础说下 Glide的Githu ...

  4. canvas基础动画示例

    canvas基础动画示例 本文主要用最简单的例子,展示canvas动画效果是如何实现的 动画效果,是一个球绕着一点旋转 const canvas = document.getElementById(' ...

  5. iOS常用动画 类封装

    //这是一个很好的动画封装类 很容易明白很详细 和大家分享 // CoreAnimationEffect.h // CoreAnimationEffect // // Created by Vince ...

  6. Android AsyncTask 深度理解、简单封装、任务队列分析、自定义线程池

    前言:由于最近在做SDK的功能,需要设计线程池.看了很多资料不知道从何开始着手,突然发现了AsyncTask有对线程池的封装,so,就拿它开刀,本文将从AsyncTask的基本用法,到简单的封装,再到 ...

  7. FMDB简单封装和使用

    工具:火狐浏览器+SQLite Manager插件 ; Xcode; FMDB库; 效果: 项目地址: https://github.com/sven713/PackFMDB 主要参考这两篇博客: 1 ...

  8. Canvas 知识体系简单总结

    Canvas 知识体系简单总结 标签(空格分隔): HTML5 Canvas 本文原创,如需转载,请注明出处 前言 知识点零零散散,一个上午整理了一下,内容不多,方便记忆. 本文不是教程,如需教程移步 ...

  9. Android--Retrofit+RxJava的简单封装(三)

    1,继续接着上一篇的讲讲,话说如果像上一篇这样的话,那么我们每一次请求一个结构都要创建一堆的Retrofit对象,而且代码都是相同的,我们可以试试封装一下 先创建一个HttpMethods类,将Ret ...

随机推荐

  1. HttpClient4.3.6 实现https访问

    package httptest; import java.io.IOException; import java.nio.charset.Charset; import java.security. ...

  2. 设置android状态栏颜色和toolbar颜色一致

    使用:https://github.com/jgilfelt/SystemBarTint在Activity中:@Overrideprotected void onCreate(Bundle saved ...

  3. Linux SendMail 使用外部SMTP服务发送邮件

    这个今天刚好用到,就测试了一下.OK了..因为,PYTHON模块是可以,但SHELL脚本用SHELL发,还是合拍点.. http://my.oschina.net/duangr/blog/183162 ...

  4. LINUX下安装ORACLE,完全搞定

    参考文档: http://www.tuicool.com/articles/eE3mmy http://blog.chinaunix.net/uid-11209572-id-3599052.html

  5. RS232及RTS和CTS

    EIA RS-232-C标准 EIA RS-232-C是由美国电子工业协会EIA制定的串行通信物理接口标准.最初是远程数据通信时,为连接数据终端设备DTE(Data Terminal Equipmen ...

  6. android studio 新建项目 界面一直停在 【“building ‘ 项目名’ gradle project info”】

    zhezhelin android studio 新建项目 界面一直停在 [“building ‘ 项目名’ gradle project info”] 安装了android studio 之后,按照 ...

  7. [OpenGL]VS2010配置OpenGL开发环境

    opengl概述 OpenGL(Open Graphics Library)是一个跨编程语言.跨平台的专业图形程序接口. OpenGL是SGI公司开发的一套计算机图形处理系统,是图形硬件的软件接口,任 ...

  8. 对ExtJS4应用 性能优化的几点建议

    ExtJS由于UI设计过去强悍,导致性能问题一直被大家诟病,不过到ExtJS4.1之后,性能问题相比以前的版本已有所改善,下面是官方文档给出的优化建议,李坏在此做个小小的总结,仅供大家参考. (1)合 ...

  9. MPI Maelstrom(Dijkstra)

    http://poj.org/problem?id=1502 刷一道模板题稳定一下心情... Dijkstra求单源最短路,就是输入的时候注意下,是按下三角输入的(无向图),输入字符x表示i与j不通. ...

  10. 【模拟】Codeforces 705B Spider Man

    题目链接: http://codeforces.com/problemset/problem/705/B 题目大意: 两个人玩游戏,总共N个数,分别求前I(I=1 2 3...n)个数时游戏的获胜者是 ...