| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- /*! fly - v1.0.0 - 2014-12-22
- * https://github.com/amibug/fly
- * Copyright (c) 2014 wuyuedong; Licensed MIT */
- ! function(a) {
- a.fly = function(b, c) {
- var d = {
- version: "1.0.0",
- autoPlay: !0,
- vertex_Rtop: 20,
- speed: 1.2,
- start: {},
- end: {},
- onEnd: a.noop
- },
- e = this,
- f = a(b);
- e.init = function(a) {
- this.setOptions(a), !!this.settings.autoPlay && this.play()
- }, e.setOptions = function(b) {
- this.settings = a.extend(!0, {}, d, b);
- var c = this.settings,
- e = c.start,
- g = c.end;
- f.css({
- marginTop: "0px",
- marginLeft: "0px",
- position: "fixed"
- }).appendTo("body"), null != g.width && null != g.height && a.extend(!0, e, {
- width: 60,
- height: 60
- });
- var h = Math.min(e.top, g.top) - Math.abs(e.left - g.left) / 3;
- h < c.vertex_Rtop && (h = Math.min(c.vertex_Rtop, Math.min(e.top, g.top)));
- var i = Math.sqrt(Math.pow(e.top - g.top, 2) + Math.pow(e.left - g.left, 2)),
- j = Math.ceil(Math.min(Math.max(Math.log(i) / .05 - 75, 30), 100) / c.speed),
- k = e.top == h ? 0 : -Math.sqrt((g.top - h) / (e.top - h)),
- l = (k * e.left - g.left) / (k - 1),
- m = g.left == l ? 0 : (g.top - h) / Math.pow(g.left - l, 2);
- a.extend(!0, c, {
- count: -1,
- steps: j,
- vertex_left: l,
- vertex_top: h,
- curvature: m
- })
- }, e.play = function() {
- this.move()
- }, e.move = function() {
- var b = this.settings,
- c = b.start,
- d = b.count,
- e = b.steps,
- g = b.end,
- h = c.left + (g.left - c.left) * d / e,
- i = 0 == b.curvature ? c.top + (g.top - c.top) * d / e : b.curvature * Math.pow(h - b.vertex_left, 2) + b.vertex_top;
- if (null != g.width && null != g.height) {
- var j = e / 2,
- k = g.width - (g.width - c.width) * Math.cos(j > d ? 0 : (d - j) / (e - j) * Math.PI / 2),
- l = g.height - (g.height - c.height) * Math.cos(j > d ? 0 : (d - j) / (e - j) * Math.PI / 2);
- f.css({
- width: k + "px",
- height: l + "px",
- "font-size": Math.min(k, l) + "px"
- })
- }
- f.css({
- left: h + "px",
- top: i + "px"
- }), b.count++;
- var m = window.requestAnimationFrame(a.proxy(this.move, this));
- d == e && (window.cancelAnimationFrame(m), b.onEnd.apply(this))
- }, e.destory = function() {
- f.remove()
- }, e.init(c)
- }, a.fn.fly = function(b) {
- return this.each(function() {
- void 0 == a(this).data("fly") && a(this).data("fly", new a.fly(this, b))
- })
- }
- }(jQuery);
|