This is a feel update.

+ Created a new easing function called "tabcandyBounce" (which will soon be all the rage in the underground dance clubs fo Europe).
+ tabcandyBounce is the kind of easing function that gentle overshoots the ends and then bounces back, giving a human feel.
+ tabcandyBounce feels faster than it actually is :)
+ The new easing function is now used for most animations.
This commit is contained in:
Aza Raskin 2010-04-28 20:12:34 -07:00
parent 7fcdbe0da5
commit 5e96413c12
4 changed files with 71 additions and 13 deletions

View File

@ -107,7 +107,7 @@ window.Group = function(listOfEls, options) {
.val(self.defaultName);
} else {
self.$title.css({"background":"none"})
.animate({"paddingLeft":1, "easing":"linear"}, 340);
.animate({"paddingLeft":1}, 340, "tabcandyBounce");
}
};
@ -295,9 +295,10 @@ window.Group.prototype = $.extend(new Item(), new Subscribable(), {
this.$content.css(contentCSS);
} else {
TabMirror.pausePainting();
$(this.container).animate(css, {complete: function() {
TabMirror.resumePainting();
}}).dequeue();
$(this.container).animate(css, {
complete: function() {TabMirror.resumePainting();},
easing: "tabcandyBounce"
}).dequeue();
this.$titlebar.animate(titlebarCSS).dequeue();
this.$content.animate(contentCSS).dequeue();
@ -604,7 +605,7 @@ window.Group.prototype = $.extend(new Item(), new Subscribable(), {
height: overlayHeight,
top: pos.top,
left: pos.left
},170).addClass("overlay");
}, 350, "tabcandyBounce").addClass("overlay");//xxx
var box = new Rect(pos.left, pos.top, overlayWidth, overlayHeight);
box.inset(8, 8);
@ -892,11 +893,11 @@ window.Groups = {
// ----------
getBoundsForNewTabGroup: function() {
var pad = 5;
var pad = 20;
var sw = window.innerWidth;
var sh = window.innerHeight;
//var w = sw - (pad * 2);
var w = TabItems.tabWidth*2.5 + pad*4;
var w = TabItems.tabWidth*2 + pad*2;
var h = TabItems.tabHeight*1.2 + pad*2;
return new Rect(pad, sh - (h + pad), w, h);
},

View File

@ -0,0 +1,55 @@
/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
*
* Open source under the BSD License.
*
* Copyright © 2008 George McGinley Smith
* All rights reserved.
*
* Edited and mangled by Aza Raskin :)
*
* Redistribution and use in source and binary forms, with or without modification,
* are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright notice, this list of
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list
* of conditions and the following disclaimer in the documentation and/or other materials
* provided with the distribution.
*
* Neither the name of the author nor the names of contributors may be used to endorse
* or promote products derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
* OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/
// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];
jQuery.extend( jQuery.easing,
{
def: 'easeOutQuad',
swing: function (x, t, b, c, d) {
//alert(jQuery.easing.default);
return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
},
tabcandyBounce: function (x, t, b, c, d, s) {
if (s == undefined) s = 1.70158;
return c*(Math.pow((t=t/d-1),3)*t*((s+1)*t+.3 + s) + 1) + b;
}
});

View File

@ -98,9 +98,11 @@ window.TabItem.prototype = $.extend(new Item(), {
$container.css(css);
} else {
TabMirror.pausePainting();
$container.animate(css, {complete: function() {
TabMirror.resumePainting();
}}).dequeue();
$container.animate(css,{
complete: function() {TabMirror.resumePainting();},
duration: 350,
easing: "tabcandyBounce"
}).dequeue();
}
if(css.fontSize) {
@ -254,10 +256,9 @@ window.TabItems = {
.animate({
top: -10,
left: 0,
easing: "easein",
width: orig.width*scale,
height: orig.height*scale
}, 200, onZoomDone);
}, 200, "easeOutQuad", onZoomDone);
}
} else {
$(this).find("canvas").data("link").tab.raw.pos = $(this).position();

View File

@ -21,7 +21,8 @@
</script>
<script type="text/javascript;version=1.8" src="../../js/optional/stacktrace.js"></script>
<script type="text/javascript;version=1.8" src="../../js/core/jquery.js"></script>
<script type="text/javascript;version=1.8" src="../../js/core/jquery.js"></script>
<script type="text/javascript;version=1.8" src="../../js/optional/jquery-tabcandy-easing.js"></script>
<script type="text/javascript;version=1.8" src="../../js/optional/jquery.lint.js"></script>
<script type="text/javascript;version=1.8" src="../../js/optional/jquery-ui.js"></script>
<script type="text/javascript;version=1.8" src="../../js/core/utils.js"></script>