for COM

github: https://github.com/laixiangran/commonJS/blob/master/src/forCOM.js

代码

/**
* Created by laixiangran on 2016/1/25.
* homepage: http://www.cnblogs.com/laixiangran/
* for COM(命名空间)
*/
(function(undefined) { var com = window.COM = window.COM || {}; /*
* 产生唯一ID
* */
com.buildGuid = function() {
function guid() {
return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}
return (guid()+guid()+"-"+guid()+"-"+guid()+"-"+guid()+"-"+guid()+guid()+guid());
}; /*
* 取得数据的类型(一个参数时)或判定数据的类型(两个参数时)
* @param obj 数据
* @param str 用于判断的数据类型
* */
com.getOrIsType = (function() {
var reg = /^(\w)/,
regFn = function($, $1) {
return $1.toUpperCase();
},
to_s = Object.prototype.toString;
return function(obj, str) {
var result = (typeof obj).replace(reg, regFn);
if (result === "Object" || (result === "Function" && obj.exec) ){ // safari chrome中 type /i/ 为function
if (obj === null) {
result = "Null";
}
else if (obj.window == obj) { // 返回Window的构造器名字
result = "Window";
}
else if (obj.callee) { // 类数组的参数组
result = "Arguments";
}
else if (obj.nodeType === 9) {
result = "Document";
}
else if (obj.nodeName) { // 处理元素节点
result = (obj.nodeName + "").replace("#", "");
}
else if (!obj.constructor || !(obj instanceof Object)) {
if("send" in obj && "setRequestHeader" in obj){//处理IE5-8的宿主对象与节点集合
result = "XMLHttpRequest"
}else if("length" in obj && "item" in obj){
result = "namedItem" in obj ? "HTMLCollection" : "NodeList";
}else{
result = "Unknown";
}
}else {
result = to_s.call(obj).slice(8,-1);
}
}
if (result === "Number" && isNaN(obj)) {
result = "NaN";
} // safari chrome中 对 HTMLCollection与NodeList的to_s都为 "NodeList",此bug暂时无解
if (str) {
return str === result;
}
return result;
};
})(); /**
* Tween介绍:
* Linear:无缓动效果
* Quadratic:二次方的缓动(t^2)
* Cubic:三次方的缓动(t^3)
* Quartic:四次方的缓动(t^4)
* Quintic:五次方的缓动(t^5)
* Sinusoidal:正弦曲线的缓动(sin(t))
* Exponential:指数曲线的缓动(2^t)
* Circular:圆形曲线的缓动(sqrt(1-t^2))
* Elastic:指数衰减的正弦曲线缓动
* Back:超过范围的三次方缓动((s+1)*t^3 – s*t^2)
* Bounce:指数衰减的反弹缓动
* 每个效果都分三个缓动方式,分别是(可采用后面的邪恶记忆法帮助记忆):
* easeIn:从0开始加速的缓动;
* easeOut:减速到0的缓动;
* easeInOut:前半段从0开始加速,后半段减速到0的缓动。
*
* @param currTime: current time(当前时间)
* @param beginVal: beginning value(初始值)
* @param changeVal: change in value(变化量)
* @param duration: duration(持续时间)
*/
com.tween = {
"Linear": function(currTime, beginVal, changeVal, duration) {
return changeVal*currTime/duration + beginVal;
},
"Quad": {
easeIn: function(currTime, beginVal, changeVal, duration) {
return changeVal * (currTime /= duration) * currTime + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration) {
return -changeVal *(currTime /= duration)*(currTime-2) + beginVal;
},
easeInOut: function(currTime, beginVal, changeVal, duration) {
if ((currTime /= duration / 2) < 1) return changeVal / 2 * currTime * currTime + beginVal;
return -changeVal / 2 * ((--currTime) * (currTime-2) - 1) + beginVal;
}
},
"Cubic": {
easeIn: function(currTime, beginVal, changeVal, duration) {
return changeVal * (currTime /= duration) * currTime * currTime + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration) {
return changeVal * ((currTime = currTime/duration - 1) * currTime * currTime + 1) + beginVal;
},
easeInOut: function(currTime, beginVal, changeVal, duration) {
if ((currTime /= duration / 2) < 1) return changeVal / 2 * currTime * currTime*currTime + beginVal;
return changeVal / 2*((currTime -= 2) * currTime * currTime + 2) + beginVal;
}
},
"Quart": {
easeIn: function(currTime, beginVal, changeVal, duration) {
return changeVal * (currTime /= duration) * currTime * currTime*currTime + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration) {
return -changeVal * ((currTime = currTime/duration - 1) * currTime * currTime*currTime - 1) + beginVal;
},
easeInOut: function(currTime, beginVal, changeVal, duration) {
if ((currTime /= duration / 2) < 1) return changeVal / 2 * currTime * currTime * currTime * currTime + beginVal;
return -changeVal / 2 * ((currTime -= 2) * currTime * currTime*currTime - 2) + beginVal;
}
},
"Quint": {
easeIn: function(currTime, beginVal, changeVal, duration) {
return changeVal * (currTime /= duration) * currTime * currTime * currTime * currTime + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration) {
return changeVal * ((currTime = currTime/duration - 1) * currTime * currTime * currTime * currTime + 1) + beginVal;
},
easeInOut: function(currTime, beginVal, changeVal, duration) {
if ((currTime /= duration / 2) < 1) return changeVal / 2 * currTime * currTime * currTime * currTime * currTime + beginVal;
return changeVal / 2*((currTime -= 2) * currTime * currTime * currTime * currTime + 2) + beginVal;
}
},
"Sine": {
easeIn: function(currTime, beginVal, changeVal, duration) {
return -changeVal * Math.cos(currTime/duration * (Math.PI/2)) + changeVal + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration) {
return changeVal * Math.sin(currTime/duration * (Math.PI/2)) + beginVal;
},
easeInOut: function(currTime, beginVal, changeVal, duration) {
return -changeVal / 2 * (Math.cos(Math.PI * currTime/duration) - 1) + beginVal;
}
},
"Expo": {
easeIn: function(currTime, beginVal, changeVal, duration) {
return (currTime==0) ? beginVal : changeVal * Math.pow(2, 10 * (currTime/duration - 1)) + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration) {
return (currTime==duration) ? beginVal + changeVal : changeVal * (-Math.pow(2, -10 * currTime/duration) + 1) + beginVal;
},
easeInOut: function(currTime, beginVal, changeVal, duration) {
if (currTime==0) return beginVal;
if (currTime==duration) return beginVal+changeVal;
if ((currTime /= duration / 2) < 1) return changeVal / 2 * Math.pow(2, 10 * (currTime - 1)) + beginVal;
return changeVal / 2 * (-Math.pow(2, -10 * --currTime) + 2) + beginVal;
}
},
"Circ": {
easeIn: function(currTime, beginVal, changeVal, duration) {
return -changeVal * (Math.sqrt(1 - (currTime /= duration) * currTime) - 1) + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration) {
return changeVal * Math.sqrt(1 - (currTime = currTime/duration - 1) * currTime) + beginVal;
},
easeInOut: function(currTime, beginVal, changeVal, duration) {
if ((currTime /= duration / 2) < 1) return -changeVal / 2 * (Math.sqrt(1 - currTime * currTime) - 1) + beginVal;
return changeVal / 2 * (Math.sqrt(1 - (currTime -= 2) * currTime) + 1) + beginVal;
}
},
"Elastic": {
easeIn: function(currTime, beginVal, changeVal, duration, a, p) {
var s;
if (currTime==0) return beginVal;
if ((currTime /= duration) == 1) return beginVal + changeVal;
if (typeof p == "undefined") p = duration * .3;
if (!a || a < Math.abs(changeVal)) {
s = p / 4;
a = changeVal;
} else {
s = p / (2 * Math.PI) * Math.asin(changeVal / a);
}
return -(a * Math.pow(2, 10 * (currTime -= 1)) * Math.sin((currTime * duration - s) * (2 * Math.PI) / p)) + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration, a, p) {
var s;
if (currTime==0) return beginVal;
if ((currTime /= duration) == 1) return beginVal + changeVal;
if (typeof p == "undefined") p = duration * .3;
if (!a || a < Math.abs(changeVal)) {
a = changeVal;
s = p / 4;
} else {
s = p/(2*Math.PI) * Math.asin(changeVal/a);
}
return (a * Math.pow(2, -10 * currTime) * Math.sin((currTime * duration - s) * (2 * Math.PI) / p) + changeVal + beginVal);
},
easeInOut: function(currTime, beginVal, changeVal, duration, a, p) {
var s;
if (currTime==0) return beginVal;
if ((currTime /= duration / 2) == 2) return beginVal+changeVal;
if (typeof p == "undefined") p = duration * (.3 * 1.5);
if (!a || a < Math.abs(changeVal)) {
a = changeVal;
s = p / 4;
} else {
s = p / (2 *Math.PI) * Math.asin(changeVal / a);
}
if (currTime < 1) return -.5 * (a * Math.pow(2, 10* (currTime -=1 )) * Math.sin((currTime * duration - s) * (2 * Math.PI) / p)) + beginVal;
return a * Math.pow(2, -10 * (currTime -= 1)) * Math.sin((currTime * duration - s) * (2 * Math.PI) / p ) * .5 + changeVal + beginVal;
}
},
"Back": {
easeIn: function(currTime, beginVal, changeVal, duration, s) {
if (typeof s == "undefined") s = 1.70158;
return changeVal * (currTime /= duration) * currTime * ((s + 1) * currTime - s) + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration, s) {
if (typeof s == "undefined") s = 1.70158;
return changeVal * ((currTime = currTime/duration - 1) * currTime * ((s + 1) * currTime + s) + 1) + beginVal;
},
easeInOut: function(currTime, beginVal, changeVal, duration, s) {
if (typeof s == "undefined") s = 1.70158;
if ((currTime /= duration / 2) < 1) return changeVal / 2 * (currTime * currTime * (((s *= (1.525)) + 1) * currTime - s)) + beginVal;
return changeVal / 2*((currTime -= 2) * currTime * (((s *= (1.525)) + 1) * currTime + s) + 2) + beginVal;
}
},
"Bounce": {
easeIn: function(currTime, beginVal, changeVal, duration) {
return changeVal - commonJS.tween.Bounce.easeOut(duration-currTime, 0, changeVal, duration) + beginVal;
},
easeOut: function(currTime, beginVal, changeVal, duration) {
if ((currTime /= duration) < (1 / 2.75)) {
return changeVal * (7.5625 * currTime * currTime) + beginVal;
} else if (currTime < (2 / 2.75)) {
return changeVal * (7.5625 * (currTime -= (1.5 / 2.75)) * currTime + .75) + beginVal;
} else if (currTime < (2.5 / 2.75)) {
return changeVal * (7.5625 * (currTime -= (2.25 / 2.75)) * currTime + .9375) + beginVal;
} else {
return changeVal * (7.5625 * (currTime -= (2.625 / 2.75)) * currTime + .984375) + beginVal;
}
},
easeInOut: function(currTime, beginVal, changeVal, duration) {
if (currTime < duration / 2) {
return commonJS.tween.Bounce.easeIn(currTime * 2, 0, changeVal, duration) * .5 + beginVal;
} else {
return commonJS.tween.Bounce.easeOut(currTime * 2 - duration, 0, changeVal, duration) * .5 + changeVal * .5 + beginVal;
}
}
}
}; }());

参考

http://www.cnblogs.com/cloudgamer/

commonJS — 通用方法(for COM)的更多相关文章

  1. 使用java泛型设计通用方法

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 因此我们可以利用泛型和反射来设计一些通用方法. 现在有2张表, 一张user表和一张stu ...

  2. .NET基础架构方法—DataTableToExcel通用方法

    p { display: block; margin: 3px 0 0 0; } --> .NET架构基础方法—DataTableToExcel通用方法(NPOI) 今天封装DataTaleTo ...

  3. DataTable数据赋值给Model通用方法

    注:该文属本人原创,今后项目中发现该方法存在BUG会实时更新,转载记得附上原文出处,方便大家获得最新代码. 相信大家在做项目中,经常会根据不同的表new各种不同的Model,当需要对Model进行实例 ...

  4. 带毫秒的字符转换成时间(DateTime)格式的通用方法

    C#自身有更好的方式,Net任意String格式转换为DateTime类型 ====================================================== 原文 ==== ...

  5. 使用 highchart 绘制柱状图的通用方法与接口

    本文给出使用 highchart 绘制柱状图的通用方法与接口, 只要指定相应的数据结构和配置, 就可以直接拿来使用. 一.  数据结构与基本接口   一般绘制图形, 会涉及到较复杂的数据结构, 比如使 ...

  6. C# 深拷贝通用方法

    C#深拷贝通用方法(引用类型的拷贝) /// <summary> /// 深度COPY /// </summary> /// <typeparam name=" ...

  7. List对象排序的通用方法

    转自 @author chenchuang import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Me ...

  8. js添加事件通用方法

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. hibernate学习笔记4---HQL、通用方法的抽取实现

    一.通用方法的抽取实现 由于hibernate中对增删改查的一切操作都是面向对象的,所以将增删改查抽取成通用方法,以满足不同的表的增删改查操作,简化jdbc代码. 具体例子如下: package cn ...

随机推荐

  1. Java总结反射

    [案例1]通过一个对象获得完整的包名和类名 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 package Reflect;   /**  * 通过一个对象获得完整的包名和类名 ...

  2. qt中信号与槽机制

    一. 简介 就我个人来理解,信号槽机制与Windows下消息机制类似,消息机制是基于回调函数,Qt中用信号与槽来代替函数指针,使程序更安全简洁. 信号和槽机制是 Qt 的核心机制,可以让编程人员将互不 ...

  3. linux 内核手动编译

    手动编译内核 编译时后应安装的支持yum install perlyum install bcyum insatll gcc-c++ .uname -r 先查看内核版本 .yum groupinsta ...

  4. 零零碎碎写的shell脚本(二):一键修改网络配置信息脚本

    #!/bin/bash ip_mod=$ mask_mod=$ gw_mod=$ dns_mod=$ hostname_mod=$ hosts=/etc/hosts ifcfg=/etc/syscon ...

  5. JavaScript的循环语句

    JavaScript的循环语句 1.JavaScript的循环语句 (1)for循环语句 - 循环代码块一定的次数: (2)for/in循环语句 - 循环遍历对象的属性: (3)while循环语句 - ...

  6. Python3基础 用三个双引号 print输出多行文本

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  7. Application 应用程序对象使用介绍

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="DemoApplicatio ...

  8. CSS3弹力球

    如下代码实现方块在限定区域内不停弹跳. <!DOCTYPE html> <html> <head> <style> div { width:100px; ...

  9. 异步设备IO 《windows核心编程》第10章学习

    异步IO操作与同步操作区别: 在CreateFile里的FILE_FLAG_OVERLAPPED标志 异步操作函数LPOVERLAPPED参数 接收IO请求完成通知 触发设备内核对象 缺点:同一个设备 ...

  10. CentOS 7下编译FreeSWITCH 1.6

    安装背景: 已经最小化安装CentOS 7. 准备工作: 挂载安装光盘,配置yum本地化安装,配置方法可以参考http://www.cnblogs.com/yoyotl/p/4877439.html. ...