for COM

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

代码

  1. /**
  2. * Created by laixiangran on 2016/1/25.
  3. * homepage: http://www.cnblogs.com/laixiangran/
  4. * for COM(命名空间)
  5. */
  6. (function(undefined) {
  7. var com = window.COM = window.COM || {};
  8. /*
  9. * 产生唯一ID
  10. * */
  11. com.buildGuid = function() {
  12. function guid() {
  13. return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
  14. }
  15. return (guid()+guid()+"-"+guid()+"-"+guid()+"-"+guid()+"-"+guid()+guid()+guid());
  16. };
  17. /*
  18. * 取得数据的类型(一个参数时)或判定数据的类型(两个参数时)
  19. * @param obj 数据
  20. * @param str 用于判断的数据类型
  21. * */
  22. com.getOrIsType = (function() {
  23. var reg = /^(\w)/,
  24. regFn = function($, $1) {
  25. return $1.toUpperCase();
  26. },
  27. to_s = Object.prototype.toString;
  28. return function(obj, str) {
  29. var result = (typeof obj).replace(reg, regFn);
  30. if (result === "Object" || (result === "Function" && obj.exec) ){ // safari chrome中 type /i/ 为function
  31. if (obj === null) {
  32. result = "Null";
  33. }
  34. else if (obj.window == obj) { // 返回Window的构造器名字
  35. result = "Window";
  36. }
  37. else if (obj.callee) { // 类数组的参数组
  38. result = "Arguments";
  39. }
  40. else if (obj.nodeType === 9) {
  41. result = "Document";
  42. }
  43. else if (obj.nodeName) { // 处理元素节点
  44. result = (obj.nodeName + "").replace("#", "");
  45. }
  46. else if (!obj.constructor || !(obj instanceof Object)) {
  47. if("send" in obj && "setRequestHeader" in obj){//处理IE5-8的宿主对象与节点集合
  48. result = "XMLHttpRequest"
  49. }else if("length" in obj && "item" in obj){
  50. result = "namedItem" in obj ? "HTMLCollection" : "NodeList";
  51. }else{
  52. result = "Unknown";
  53. }
  54. }else {
  55. result = to_s.call(obj).slice(8,-1);
  56. }
  57. }
  58. if (result === "Number" && isNaN(obj)) {
  59. result = "NaN";
  60. }
  61. // safari chrome中 对 HTMLCollection与NodeList的to_s都为 "NodeList",此bug暂时无解
  62. if (str) {
  63. return str === result;
  64. }
  65. return result;
  66. };
  67. })();
  68. /**
  69. * Tween介绍:
  70. * Linear:无缓动效果
  71. * Quadratic:二次方的缓动(t^2)
  72. * Cubic:三次方的缓动(t^3)
  73. * Quartic:四次方的缓动(t^4)
  74. * Quintic:五次方的缓动(t^5)
  75. * Sinusoidal:正弦曲线的缓动(sin(t))
  76. * Exponential:指数曲线的缓动(2^t)
  77. * Circular:圆形曲线的缓动(sqrt(1-t^2))
  78. * Elastic:指数衰减的正弦曲线缓动
  79. * Back:超过范围的三次方缓动((s+1)*t^3 – s*t^2)
  80. * Bounce:指数衰减的反弹缓动
  81. * 每个效果都分三个缓动方式,分别是(可采用后面的邪恶记忆法帮助记忆):
  82. * easeIn:从0开始加速的缓动;
  83. * easeOut:减速到0的缓动;
  84. * easeInOut:前半段从0开始加速,后半段减速到0的缓动。
  85. *
  86. * @param currTime: current time(当前时间)
  87. * @param beginVal: beginning value(初始值)
  88. * @param changeVal: change in value(变化量)
  89. * @param duration: duration(持续时间)
  90. */
  91. com.tween = {
  92. "Linear": function(currTime, beginVal, changeVal, duration) {
  93. return changeVal*currTime/duration + beginVal;
  94. },
  95. "Quad": {
  96. easeIn: function(currTime, beginVal, changeVal, duration) {
  97. return changeVal * (currTime /= duration) * currTime + beginVal;
  98. },
  99. easeOut: function(currTime, beginVal, changeVal, duration) {
  100. return -changeVal *(currTime /= duration)*(currTime-2) + beginVal;
  101. },
  102. easeInOut: function(currTime, beginVal, changeVal, duration) {
  103. if ((currTime /= duration / 2) < 1) return changeVal / 2 * currTime * currTime + beginVal;
  104. return -changeVal / 2 * ((--currTime) * (currTime-2) - 1) + beginVal;
  105. }
  106. },
  107. "Cubic": {
  108. easeIn: function(currTime, beginVal, changeVal, duration) {
  109. return changeVal * (currTime /= duration) * currTime * currTime + beginVal;
  110. },
  111. easeOut: function(currTime, beginVal, changeVal, duration) {
  112. return changeVal * ((currTime = currTime/duration - 1) * currTime * currTime + 1) + beginVal;
  113. },
  114. easeInOut: function(currTime, beginVal, changeVal, duration) {
  115. if ((currTime /= duration / 2) < 1) return changeVal / 2 * currTime * currTime*currTime + beginVal;
  116. return changeVal / 2*((currTime -= 2) * currTime * currTime + 2) + beginVal;
  117. }
  118. },
  119. "Quart": {
  120. easeIn: function(currTime, beginVal, changeVal, duration) {
  121. return changeVal * (currTime /= duration) * currTime * currTime*currTime + beginVal;
  122. },
  123. easeOut: function(currTime, beginVal, changeVal, duration) {
  124. return -changeVal * ((currTime = currTime/duration - 1) * currTime * currTime*currTime - 1) + beginVal;
  125. },
  126. easeInOut: function(currTime, beginVal, changeVal, duration) {
  127. if ((currTime /= duration / 2) < 1) return changeVal / 2 * currTime * currTime * currTime * currTime + beginVal;
  128. return -changeVal / 2 * ((currTime -= 2) * currTime * currTime*currTime - 2) + beginVal;
  129. }
  130. },
  131. "Quint": {
  132. easeIn: function(currTime, beginVal, changeVal, duration) {
  133. return changeVal * (currTime /= duration) * currTime * currTime * currTime * currTime + beginVal;
  134. },
  135. easeOut: function(currTime, beginVal, changeVal, duration) {
  136. return changeVal * ((currTime = currTime/duration - 1) * currTime * currTime * currTime * currTime + 1) + beginVal;
  137. },
  138. easeInOut: function(currTime, beginVal, changeVal, duration) {
  139. if ((currTime /= duration / 2) < 1) return changeVal / 2 * currTime * currTime * currTime * currTime * currTime + beginVal;
  140. return changeVal / 2*((currTime -= 2) * currTime * currTime * currTime * currTime + 2) + beginVal;
  141. }
  142. },
  143. "Sine": {
  144. easeIn: function(currTime, beginVal, changeVal, duration) {
  145. return -changeVal * Math.cos(currTime/duration * (Math.PI/2)) + changeVal + beginVal;
  146. },
  147. easeOut: function(currTime, beginVal, changeVal, duration) {
  148. return changeVal * Math.sin(currTime/duration * (Math.PI/2)) + beginVal;
  149. },
  150. easeInOut: function(currTime, beginVal, changeVal, duration) {
  151. return -changeVal / 2 * (Math.cos(Math.PI * currTime/duration) - 1) + beginVal;
  152. }
  153. },
  154. "Expo": {
  155. easeIn: function(currTime, beginVal, changeVal, duration) {
  156. return (currTime==0) ? beginVal : changeVal * Math.pow(2, 10 * (currTime/duration - 1)) + beginVal;
  157. },
  158. easeOut: function(currTime, beginVal, changeVal, duration) {
  159. return (currTime==duration) ? beginVal + changeVal : changeVal * (-Math.pow(2, -10 * currTime/duration) + 1) + beginVal;
  160. },
  161. easeInOut: function(currTime, beginVal, changeVal, duration) {
  162. if (currTime==0) return beginVal;
  163. if (currTime==duration) return beginVal+changeVal;
  164. if ((currTime /= duration / 2) < 1) return changeVal / 2 * Math.pow(2, 10 * (currTime - 1)) + beginVal;
  165. return changeVal / 2 * (-Math.pow(2, -10 * --currTime) + 2) + beginVal;
  166. }
  167. },
  168. "Circ": {
  169. easeIn: function(currTime, beginVal, changeVal, duration) {
  170. return -changeVal * (Math.sqrt(1 - (currTime /= duration) * currTime) - 1) + beginVal;
  171. },
  172. easeOut: function(currTime, beginVal, changeVal, duration) {
  173. return changeVal * Math.sqrt(1 - (currTime = currTime/duration - 1) * currTime) + beginVal;
  174. },
  175. easeInOut: function(currTime, beginVal, changeVal, duration) {
  176. if ((currTime /= duration / 2) < 1) return -changeVal / 2 * (Math.sqrt(1 - currTime * currTime) - 1) + beginVal;
  177. return changeVal / 2 * (Math.sqrt(1 - (currTime -= 2) * currTime) + 1) + beginVal;
  178. }
  179. },
  180. "Elastic": {
  181. easeIn: function(currTime, beginVal, changeVal, duration, a, p) {
  182. var s;
  183. if (currTime==0) return beginVal;
  184. if ((currTime /= duration) == 1) return beginVal + changeVal;
  185. if (typeof p == "undefined") p = duration * .3;
  186. if (!a || a < Math.abs(changeVal)) {
  187. s = p / 4;
  188. a = changeVal;
  189. } else {
  190. s = p / (2 * Math.PI) * Math.asin(changeVal / a);
  191. }
  192. return -(a * Math.pow(2, 10 * (currTime -= 1)) * Math.sin((currTime * duration - s) * (2 * Math.PI) / p)) + beginVal;
  193. },
  194. easeOut: function(currTime, beginVal, changeVal, duration, a, p) {
  195. var s;
  196. if (currTime==0) return beginVal;
  197. if ((currTime /= duration) == 1) return beginVal + changeVal;
  198. if (typeof p == "undefined") p = duration * .3;
  199. if (!a || a < Math.abs(changeVal)) {
  200. a = changeVal;
  201. s = p / 4;
  202. } else {
  203. s = p/(2*Math.PI) * Math.asin(changeVal/a);
  204. }
  205. return (a * Math.pow(2, -10 * currTime) * Math.sin((currTime * duration - s) * (2 * Math.PI) / p) + changeVal + beginVal);
  206. },
  207. easeInOut: function(currTime, beginVal, changeVal, duration, a, p) {
  208. var s;
  209. if (currTime==0) return beginVal;
  210. if ((currTime /= duration / 2) == 2) return beginVal+changeVal;
  211. if (typeof p == "undefined") p = duration * (.3 * 1.5);
  212. if (!a || a < Math.abs(changeVal)) {
  213. a = changeVal;
  214. s = p / 4;
  215. } else {
  216. s = p / (2 *Math.PI) * Math.asin(changeVal / a);
  217. }
  218. if (currTime < 1) return -.5 * (a * Math.pow(2, 10* (currTime -=1 )) * Math.sin((currTime * duration - s) * (2 * Math.PI) / p)) + beginVal;
  219. return a * Math.pow(2, -10 * (currTime -= 1)) * Math.sin((currTime * duration - s) * (2 * Math.PI) / p ) * .5 + changeVal + beginVal;
  220. }
  221. },
  222. "Back": {
  223. easeIn: function(currTime, beginVal, changeVal, duration, s) {
  224. if (typeof s == "undefined") s = 1.70158;
  225. return changeVal * (currTime /= duration) * currTime * ((s + 1) * currTime - s) + beginVal;
  226. },
  227. easeOut: function(currTime, beginVal, changeVal, duration, s) {
  228. if (typeof s == "undefined") s = 1.70158;
  229. return changeVal * ((currTime = currTime/duration - 1) * currTime * ((s + 1) * currTime + s) + 1) + beginVal;
  230. },
  231. easeInOut: function(currTime, beginVal, changeVal, duration, s) {
  232. if (typeof s == "undefined") s = 1.70158;
  233. if ((currTime /= duration / 2) < 1) return changeVal / 2 * (currTime * currTime * (((s *= (1.525)) + 1) * currTime - s)) + beginVal;
  234. return changeVal / 2*((currTime -= 2) * currTime * (((s *= (1.525)) + 1) * currTime + s) + 2) + beginVal;
  235. }
  236. },
  237. "Bounce": {
  238. easeIn: function(currTime, beginVal, changeVal, duration) {
  239. return changeVal - commonJS.tween.Bounce.easeOut(duration-currTime, 0, changeVal, duration) + beginVal;
  240. },
  241. easeOut: function(currTime, beginVal, changeVal, duration) {
  242. if ((currTime /= duration) < (1 / 2.75)) {
  243. return changeVal * (7.5625 * currTime * currTime) + beginVal;
  244. } else if (currTime < (2 / 2.75)) {
  245. return changeVal * (7.5625 * (currTime -= (1.5 / 2.75)) * currTime + .75) + beginVal;
  246. } else if (currTime < (2.5 / 2.75)) {
  247. return changeVal * (7.5625 * (currTime -= (2.25 / 2.75)) * currTime + .9375) + beginVal;
  248. } else {
  249. return changeVal * (7.5625 * (currTime -= (2.625 / 2.75)) * currTime + .984375) + beginVal;
  250. }
  251. },
  252. easeInOut: function(currTime, beginVal, changeVal, duration) {
  253. if (currTime < duration / 2) {
  254. return commonJS.tween.Bounce.easeIn(currTime * 2, 0, changeVal, duration) * .5 + beginVal;
  255. } else {
  256. return commonJS.tween.Bounce.easeOut(currTime * 2 - duration, 0, changeVal, duration) * .5 + changeVal * .5 + beginVal;
  257. }
  258. }
  259. }
  260. };
  261. }());

参考

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. Uva(10048),最短路Floyd

    题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem ...

  2. Linux平台下线程池的原理及实现

    转自:http://blog.csdn.net/lmh12506/article/details/7753952 前段时间在github上开了个库,准备实现自己的线程池的,因为换工作的事,一直也没有实 ...

  3. gulp 建立一个简单的自动化

    前端项目需要的功能: 1.图片(压缩图片支持jpg.png.gif) 2.样式 (支持sass 同时支持合并.压缩.重命名) 3.javascript (检查.合并.压缩.重命名) 4.html (压 ...

  4. easyui.combotree.search.js

    (function ($) { //combotree可编辑,自定义模糊查询 $.fn.combotree.defaults.editable = true; $.extend($.fn.combot ...

  5. 在 Server 端存取 Excel 檔案的利器:NPOI Library

    转处 http://msdn.microsoft.com/zh-tw/ee818993.aspx Codeplex 軟體套件(Package)資訊 套件名稱 NPOI 作者 tonyqus, huse ...

  6. fffffffffff

    create proc partPage114 @n int,--每页数量 @page int, --页码从0开始 @Mainkey int as declare @sql nvarchar(1000 ...

  7. sql重新排序

    declare @i int select @i = 10 update dbo.T_StartEndCode set @i = @i+1,OrderNumber = @i

  8. 2-Babel

    一.什么是babel babel是一个源代码到源代码的转换器.比较广泛的用法就是可以把你写的符合 ECMAScript 6 标准的代码完美地转换为 ECMAScript 5 标准的代码,并且可以确保良 ...

  9. [Objective-C]__bridge,__bridge_retained和__bridge_transfer的意思,区别与使用

    使用ARC能帮我们减轻不少内存管理方面的负担,尤其是对用惯了Java的程序员来说.但是像我这种Java基础本身就不牢固,做了两年的iOS已经习惯手动管理内存的半吊子,使用ARC还是经常碰壁. 对于CF ...

  10. 修改客户端Webbrowser对应IE版本步骤

    制作注册表文件的过程 1,” HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\InternetExplorer\MAIN\ FeatureControl\FEATURE_B ...