-
Notifications
You must be signed in to change notification settings - Fork 0
/
jquery.spritely.min.js
13 lines (12 loc) · 11.2 KB
/
jquery.spritely.min.js
1
2
3
4
5
6
7
8
9
10
11
12
13
/*
* jQuery spritely 0.6.7
* http://spritely.net/
*
* Documentation:
* http://spritely.net/documentation/
*
* Copyright 2010-2011, Peter Chater, Artlogic Media Ltd, http://www.artlogic.net/
* Dual licensed under the MIT or GPL Version 2 licenses.
*/
"use strict";
(function (n) { n._spritely = { instances: {}, animate: function (t) { var u = n(t.el), i = u.attr("id"), r, s, e, o; if (!n._spritely.instances[i]) return this; if (t = n.extend(t, n._spritely.instances[i] || {}), t.type == "sprite" && t.fps) if (t.play_frames && !n._spritely.instances[i].remaining_frames ? n._spritely.instances[i].remaining_frames = t.play_frames + 1 : t.do_once && !n._spritely.instances[i].remaining_frames && (n._spritely.instances[i].remaining_frames = t.no_of_frames), s = function (u) { var c = t.width, l = t.height, f, e; if (!r) for (r = [], total = 0, f = 0; f < t.no_of_frames; f++) r[r.length] = 0 - total, total += c; if (n._spritely.instances[i].current_frame == 0) { if (t.on_first_frame) t.on_first_frame(u) } else if (n._spritely.instances[i].current_frame == r.length - 1 && t.on_last_frame) t.on_last_frame(u); if (t.on_frame && t.on_frame[n._spritely.instances[i].current_frame] && t.on_frame[n._spritely.instances[i].current_frame](u), n._spritely.instances[i].current_frame = t.rewind == !0 ? n._spritely.instances[i].current_frame <= 0 ? r.length - 1 : n._spritely.instances[i].current_frame - 1 : n._spritely.instances[i].current_frame >= r.length - 1 ? 0 : n._spritely.instances[i].current_frame + 1, e = n._spritely.getBgY(u), u.css("background-position", r[n._spritely.instances[i].current_frame] + "px " + e), t.bounce && t.bounce[0] > 0 && t.bounce[1] > 0) { var o = t.bounce[0], s = t.bounce[1], h = t.bounce[2]; u.animate({ top: "+=" + o + "px", left: "-=" + s + "px" }, h).animate({ top: "-=" + o + "px", left: "+=" + s + "px" }, h) } }, n._spritely.instances[i].remaining_frames && n._spritely.instances[i].remaining_frames > 0) { if (n._spritely.instances[i].remaining_frames--, n._spritely.instances[i].remaining_frames == 0) return n._spritely.instances[i].remaining_frames = -1, delete n._spritely.instances[i].remaining_frames, this; s(u) } else n._spritely.instances[i].remaining_frames != -1 && s(u); else if (t.type == "pan" && !n._spritely.instances[i]._stopped) { var f = t.speed || 1, h = n._spritely.instances[i].l || parseInt(n._spritely.getBgX(u).replace("px", ""), 10) || 0, c = n._spritely.instances[i].t || parseInt(n._spritely.getBgY(u).replace("px", ""), 10) || 0; if (t.do_once && !n._spritely.instances[i].remaining_frames || n._spritely.instances[i].remaining_frames <= 0) { switch (t.dir) { case "up": case "down": n._spritely.instances[i].remaining_frames = Math.floor((t.img_height || 0) / f); break; case "left": case "right": n._spritely.instances[i].remaining_frames = Math.floor((t.img_width || 0) / f) } n._spritely.instances[i].remaining_frames++ } else t.do_once && n._spritely.instances[i].remaining_frames--; switch (t.dir) { case "up": f *= -1; case "down": n._spritely.instances[i].l || (n._spritely.instances[i].l = h); n._spritely.instances[i].t = c + f; t.img_height && (n._spritely.instances[i].t %= t.img_height); break; case "left": f *= -1; case "right": n._spritely.instances[i].t || (n._spritely.instances[i].t = c); n._spritely.instances[i].l = h + f; t.img_width && (n._spritely.instances[i].l %= t.img_width) } if (e = n._spritely.instances[i].l.toString(), e += e.indexOf("%") == -1 ? "px " : " ", o = n._spritely.instances[i].t.toString(), o += o.indexOf("%") == -1 ? "px " : " ", n(u).css("background-position", e + o), t.do_once && !n._spritely.instances[i].remaining_frames) return this } n._spritely.instances[i].options = t; n._spritely.instances[i].timeout = window.setTimeout(function () { n._spritely.animate(t) }, parseInt(1e3 / t.fps)) }, randomIntBetween: function (n, t) { return parseInt(rand_no = Math.floor((t - (n - 1)) * Math.random()) + n) }, getBgUseXY: function () { try { return typeof n("body").css("background-position-x") == "string" } catch (t) { return !1 } }(), getBgY: function (t) { return n._spritely.getBgUseXY ? n(t).css("background-position-y") || "0" : (n(t).css("background-position") || " ").split(" ")[1] }, getBgX: function (t) { return n._spritely.getBgUseXY ? n(t).css("background-position-x") || "0" : (n(t).css("background-position") || " ").split(" ")[0] }, get_rel_pos: function (n, t) { var i = n; if (n < 0) while (i < 0) i += t; else while (i > t) i -= t; return i }, _spStrip: function (n, t) { for (var i, r, u, f, e, o; n.length;) { for (u = !1, f = !1, i = 0; i < t.length; i++) e = n.slice(0, 1), r = n.slice(1), t.indexOf(e) > -1 ? n = r : u = !0; for (i = 0; i < t.length; i++) o = n.slice(-1), r = n.slice(0, -1), t.indexOf(o) > -1 ? n = r : f = !0; if (u && f) return n } return "" } }; n.fn.extend({ spritely: function (t) { var i = n(this), u = i.attr("id"), t = n.extend({ type: "sprite", do_once: !1, width: null, height: null, img_width: 0, img_height: 0, fps: 12, no_of_frames: 2, play_frames: 0 }, t || {}), r = new Image, f = n._spritely._spStrip(i.css("background-image") || "", 'url("); '); return n._spritely.instances[u] || (n._spritely.instances[u] = t.start_at_frame ? { current_frame: t.start_at_frame - 1 } : { current_frame: -1 }), n._spritely.instances[u].type = t.type, n._spritely.instances[u].depth = t.depth, t.el = i, t.width = t.width || i.width() || 100, t.height = t.height || i.height() || 100, r.onload = function () { t.img_width = r.width; t.img_height = r.height; t.img = r; var i = function () { return parseInt(1e3 / t.fps) }; t.do_once ? setTimeout(function () { n._spritely.animate(t) }, 0) : setTimeout(function () { n._spritely.animate(t) }, i(t.fps)) }, r.src = f, this }, sprite: function (t) { var t = n.extend({ type: "sprite", bounce: [0, 0, 1e3] }, t || {}); return n(this).spritely(t) }, pan: function (t) { var t = n.extend({ type: "pan", dir: "left", continuous: !0, speed: 1 }, t || {}); return n(this).spritely(t) }, flyToTap: function (t) { var t = n.extend({ el_to_move: null, type: "moveToTap", ms: 1e3, do_once: !0 }, t || {}); return t.el_to_move && n(t.el_to_move).active(), n._spritely.activeSprite && (window.Touch ? n(this)[0].ontouchstart = function (t) { var i = n._spritely.activeSprite, r = t.touches[0], u = r.pageY - i.height() / 2, f = r.pageX - i.width() / 2; i.animate({ top: u + "px", left: f + "px" }, 1e3) } : n(this).click(function (t) { var i = n._spritely.activeSprite; n(i).stop(!0); var r = i.width(), u = i.height(), f = t.pageX - r / 2, e = t.pageY - u / 2; i.animate({ top: e + "px", left: f + "px" }, 1e3) })), this }, isDraggable: function (t) { if (!n(this).draggable) return this; var t = n.extend({ type: "isDraggable", start: null, stop: null, drag: null }, t || {}), i = n(this).attr("id"); return n._spritely.instances[i] ? (n._spritely.instances[i].isDraggableOptions = t, n(this).draggable({ start: function () { var t = n(this).attr("id"); n._spritely.instances[t].stop_random = !0; n(this).stop(!0); n._spritely.instances[t].isDraggableOptions.start && n._spritely.instances[t].isDraggableOptions.start(this) }, drag: t.drag, stop: function () { var t = n(this).attr("id"); n._spritely.instances[t].stop_random = !1; n._spritely.instances[t].isDraggableOptions.stop && n._spritely.instances[t].isDraggableOptions.stop(this) } }), this) : this }, active: function () { return n._spritely.activeSprite = this, this }, activeOnClick: function () { var t = n(this); return window.Touch ? t[0].ontouchstart = function () { n._spritely.activeSprite = t } : t.click(function () { n._spritely.activeSprite = t }), this }, spRandom: function (t) { var t = n.extend({ top: 50, left: 50, right: 290, bottom: 320, speed: 4e3, pause: 0 }, t || {}), i = n(this).attr("id"); if (!n._spritely.instances[i]) return this; if (!n._spritely.instances[i].stop_random) { var r = n._spritely.randomIntBetween, u = r(t.top, t.bottom), f = r(t.left, t.right); n("#" + i).animate({ top: u + "px", left: f + "px" }, t.speed) } return window.setTimeout(function () { n("#" + i).spRandom(t) }, t.speed + t.pause), this }, makeAbsolute: function () { return this.each(function () { var t = n(this), i = t.position(); t.css({ position: "absolute", marginLeft: 0, marginTop: 0, top: i.top, left: i.left }).remove().appendTo("body") }) }, spSet: function (t, i) { var r = n(this).attr("id"); return n._spritely.instances[r][t] = i, this }, spGet: function (t) { var i = n(this).attr("id"); return n._spritely.instances[i][t] }, spStop: function (t) { return this.each(function () { var r = n(this), i = r.attr("id"), u; n._spritely.instances[i].options.fps && (n._spritely.instances[i]._last_fps = n._spritely.instances[i].options.fps); n._spritely.instances[i].type == "sprite" && r.spSet("fps", 0); n._spritely.instances[i]._stopped = !0; n._spritely.instances[i]._stopped_f1 = t; t && (u = n._spritely.getBgY(n(this)), r.css("background-position", "0 " + u)) }), this }, spStart: function () { return n(this).each(function () { var t = n(this).attr("id"), i = n._spritely.instances[t]._last_fps || 12; n._spritely.instances[t].type == "sprite" && n(this).spSet("fps", i); n._spritely.instances[t]._stopped = !1 }), this }, spToggle: function () { var t = n(this).attr("id"), i = n._spritely.instances[t]._stopped || !1, r = n._spritely.instances[t]._stopped_f1 || !1; return i ? n(this).spStart() : n(this).spStop(r), this }, fps: function (t) { return n(this).each(function () { n(this).spSet("fps", t) }), this }, goToFrame: function (t) { var i = n(this).attr("id"); return n._spritely.instances && n._spritely.instances[i] && (n._spritely.instances[i].current_frame = t - 1), this }, spSpeed: function (t) { return n(this).each(function () { n(this).spSet("speed", t) }), this }, spRelSpeed: function (t) { return n(this).each(function () { var i = n(this).spGet("depth") / 100; n(this).spSet("speed", t * i) }), this }, spChangeDir: function (t) { return n(this).each(function () { n(this).spSet("dir", t) }), this }, spState: function (t) { return n(this).each(function () { var i = (t - 1) * n(this).height() + "px", r = n._spritely.getBgX(n(this)), u = r + " -" + i; n(this).css("background-position", u) }), this }, lockTo: function (t, i) { return n(this).each(function () { var r = n(this).attr("id"); if (!n._spritely.instances[r]) return this; n._spritely.instances[r].locked_el = n(this); n._spritely.instances[r].lock_to = n(t); n._spritely.instances[r].lock_to_options = i; n._spritely.instances[r].interval = window.setInterval(function () { if (n._spritely.instances[r].lock_to) { var f = n._spritely.instances[r].locked_el, t = n._spritely.instances[r].lock_to, i = n._spritely.instances[r].lock_to_options, e = i.bg_img_width, c = t.height(), o = n._spritely.getBgY(t), s = n._spritely.getBgX(t), u = parseInt(s) + parseInt(i.left), h = parseInt(o) + parseInt(i.top); u = n._spritely.get_rel_pos(u, e); n(f).css({ top: h + "px", left: u + "px" }) } }, i.interval || 20) }), this }, destroy: function () { var i = n(this), t = n(this).attr("id"); return n._spritely.instances[t] && n._spritely.instances[t].timeout && window.clearTimeout(n._spritely.instances[t].timeout), n._spritely.instances[t] && n._spritely.instances[t].interval && window.clearInterval(n._spritely.instances[t].interval), delete n._spritely.instances[t], this } }) })(jQuery); try { document.execCommand("BackgroundImageCache", !1, !0) } catch (err) { }