admin管理员组文章数量:1432436
I'm trying to create a staggerTo() animation with TweenMax that affects elements in a random order, meaning I don't want the actual animation to be random but its order.
For that I take all the elements I want to animate and shuffle using this function:
$.fn.shuffle = function() {
var allElems = this.get(),
getRandom = function(max) {
return Math.floor(Math.random() * max);
},
shuffled = $.map(allElems, function(){
var random = getRandom(allElems.length),
randEl = $(allElems[random]).clone(true)[0];
allElems.splice(random, 1);
return randEl;
});
return $(shuffled);
};
var elements = $('.animate').shuffle();
I then lunch the staggerTo animation:
TweenMax.staggerTo(elements, 0.1, {y: 100, ease: Quad.easeInOut}, 0.1);
But of course, I then realized I had it all wrong, as TweenMax wasn't animating the actual DOM elements but rather its virtual clones.
Unfortunately, I don't know how to proceed from here.
Could anyone help me out? Thanks!
I'm trying to create a staggerTo() animation with TweenMax that affects elements in a random order, meaning I don't want the actual animation to be random but its order.
For that I take all the elements I want to animate and shuffle using this function:
$.fn.shuffle = function() {
var allElems = this.get(),
getRandom = function(max) {
return Math.floor(Math.random() * max);
},
shuffled = $.map(allElems, function(){
var random = getRandom(allElems.length),
randEl = $(allElems[random]).clone(true)[0];
allElems.splice(random, 1);
return randEl;
});
return $(shuffled);
};
var elements = $('.animate').shuffle();
I then lunch the staggerTo animation:
TweenMax.staggerTo(elements, 0.1, {y: 100, ease: Quad.easeInOut}, 0.1);
But of course, I then realized I had it all wrong, as TweenMax wasn't animating the actual DOM elements but rather its virtual clones.
Unfortunately, I don't know how to proceed from here.
Could anyone help me out? Thanks!
Share Improve this question asked Apr 10, 2015 at 15:13 Stephanie D.Stephanie D. 1192 silver badges10 bronze badges1 Answer
Reset to default 6I am probably failing to understand your scenario but it seems that at the core of it, I think your problem is more about randomizing an array of jQuery elements. Have you taken a look at this?
- Convert your elements to array like so:
var elements=$('.animate').toArray();
. - Shuffle this array using this technique:
elements.sort(function(){return 0.5-Math.random()});
. Thanks to CSS-Tricks.. - Then feed this new array to the
staggerTo
call:TweenMax.staggerTo(elements, 0.1, {y: 100, ease: Quad.easeInOut}, 0.1);
i.e. what you already have. - Quick jsFiddle here.
Please note that there are many solutions when it es to shuffling arrays.
本文标签: javascriptStagger animation in a random order with TweenMaxStack Overflow
版权声明:本文标题:javascript - Stagger animation in a random order with TweenMax - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1745562487a2663556.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论