Jump to content
Search Community

Rodrigo last won the day on May 15

Rodrigo had the most liked content!

Rodrigo

Administrators
  • Posts

    6,837
  • Joined

  • Last visited

  • Days Won

    290

Everything posted by Rodrigo

  1. Hi, I wouldn't recommend neither timelineMax and stagger in order to do that, it's far more simple to create a recursive function that tweens the images from autoAlpha:0 to autoAlpha:1. Also in order to achieve a no transition effect you can use TweenLite/Max.set, that method is the equivalent to using a tween that lasts 0 seconds: TweenMax.to(element, 0 {autoAlpha:0}); //this is equal to the following TweenMax.set(element, {autoAlpha:0}) //also can be used with TweenLite TweenLite.set(element, {autoAlpha:0}); //And you can use it inside a timeline in the same way you use the convenience to method var tl = new TimelineMax(); tl.set(element, {autoAlpha:0}); The code would be like this: $(document).ready(function(){ var images = $('img'), count = images.length, transitions = 1, timeline = new TimelineMax({repeat:-1, repeatDelay:1.5}); TweenMax.set(images, {autoAlpha:0}); TweenMax.set($(".active"), {autoAlpha:1}); function fadeImage() { console.log(transitions); var active = $(".active"), next = active.next(); TweenMax.set(active, {autoAlpha:0, className:"-=active"}); TweenMax.set(next, {autoAlpha:1, className:'+=active', onComplete:nextImage}); transitions++; console.log(transitions); } setTimeout(fadeImage,1000); function nextImage() { if(transitions < count) { setTimeout(fadeImage,1000); } else { transitions = 0; TweenMax.set(images[0], {autoAlpha:1, className:'+=active'}); setTimeout(fadeImage,1000); } } }); I set up a codepen with the same images (kindly provided by Carl, thanks Carl!!), so you can see it working: http://codepen.io/rhernando/pen/ydfBb Hope this helps, Cheers, Rodrigo.
  2. Hi, I wasn't clear enough in my first post, sorry about that The seek() and resume() functions might not be needed, because you can achieve the same with just play("label") and pause(). If you have a timeline that lasts 10 seconds with labels at 3, 6 and 9 seconds and you play that timeline during 5 seconds, then you click a button to send the timeline to the 3 seconds label and stay paused, then you click the button to go to the 9 seconds label and stay paused and finally you click a button that executes the play() function, the timeline will play from 9 seconds and forward. That is why the behavior happening in your code is odd and could be because of the seek, pause and resume functions in it, my idea was something more simpler in order to see if that is the problem or something else. Also I noticed that you created some sort of plugin for the slider, maybe something inside that could be causing the trouble. As for the tweenFromTo method I forgot to mention that you can use the same label in both the from and to parameters and also can add a callback, so is a very powerful and handy method, something like this: var tl = new timelineMax({repeat:-1, repeatDelay:1}); //in the rest of the code you add the labels and particular tweens tl.tweenFromTo('label1', 'label1', {callbacks, easing}); So like that you just jump to that point on the timeline. You can see it working here: http://codepen.io/rhernando/pen/Bgjzw In a personal opinion my first choice for a image/content slider wouldn't be a timeline, maybe a setTimeout or setInterval function calling a TweenMax on an element based on a class name (active and inactive) and with a callback that triggers the function over and over, also user events to pause or suspend the timeout or interval, because if you get too many elements inside the slider the labels thing could get a little troubling. Hope this helps and sorry for not answering and getting the pen ready before, Cheers, Rodrigo.
  3. Hi, Well a good way would be use pause (just like you're already using it) and play(), something like this: tl.pause();//pauses the timeline tl.play('labelName');//plays the timeline starting at that label Another way could be to play the timeline starting at a specific label and going to the next one, keeping the timeline paused, using the tweenFromTo() method: tl.pause(); tl.tweenFromTo('labelName1', 'labelName2'); For what I can see in your site the last one seems to be the best choice, since when the user selects the slide the timeline stops. I'll set up a codepen in order to illustrate this methods. Also you can declare the repeat and delays in the timeline declaration, like this: var tl = new TimelineMax({repeat:-1, repeatDelay:1}); Hope this helps, Cheers, Rodrigo.
  4. Great job Michael, Hi score: 56 (a lot of lost eggs ) I liked the graphic design, simple yet very beautiful, my girlfriend loved the blue bird that shows in the final score. I also noticed that some eggs have easeOut functions, very deceiving . Cheers, Rodrigo.
  5. Hi Masq, By looking at your code and watching the site a little closer I can tell you that this is a pure chrome bug issue, why is this happening? I have no idea at all. If you google for chrome and animation issues you're going to find that chrome has problems with CSS3 transitions, jquery animate(), other js libraries, canvas and svg animations, besides the fact that the site runs quite smooth on safari indicates the fact that is just a chrome issue and not webkit in general. In other aspect the cpu and memory consumption are quite normal, there are no jumps in either when you do a mouse over & out in the menu elements, and when you click the animations runs a little bit jittery but it doesn't chew up the resources in a relative new laptop. Therefore I presume that there's nothing wrong with the engine itself, considering that with 7 tabs opened in firefox the animation runs very well and also there's no abnormal resource consumption. That also indicates that there's nothing structurally wrong with your code, as far as I can see. Also you haven't updated the engine version maybe that could help.. To sum it up unfortunately I can't help you further than I've already done without some serious debugging of your code which implies testing each part of it and find what's causing chrome to behave like this. One alternative to that grueling process could be to comment out some parts of the code in order to see if there's any improvement, for example leave the functions empty, so when they're called you won't get an error, that would help to isolate without any major disassemble of the site. Anyway keep posting if you can in order to see if there's anything else we can do, or if other user can chip in. Well I hope this helps a little, Cheers, Rodrigo.
  6. Hi, I've looked at your site and looks very slick, nice work!!. The only js I found were just some set tweens, so there's not much it can be done with that. I noticed that you're working with version 1.9.0, try updating it to 1.9.3. Also you're loading TweenMax and the css plugin, there's no need for that since TweenMax includes the css plugin. Regarding the chrome issue, it has been reported previously in the forum the fact that chrome puts render quality over render performance which could be a factor here. My recommendation would be to isolate as much as you can in order to make specific trials of your code and then start putting it all together piece by piece until you find what piece of the code could be causing this problem. It also would be great to take a look at the tweens code (if is not a problem for you) in order to figure what the problem could be. Cheers, Rodrigo.
  7. Glad to hear that you solved the issue. Cheers, Rodrigo.
  8. Hi Masq, You're welcome. You could test the fps meter included in chrome's developer tools. Open developer tools and in the bottom right corner you'll find a gear for the settings, click on it and in general settings - rendering select "show FPS meter". With that you'll see if the lag is related with that or some other thing creating problems. Also you could select "show painting rectangles" to see what else maybe painting besides the elements controlled by GSAP, sometimes an event bubbling in the code can cause some problems in the long term. Anyway I'll be waiting for the url to check. Cheers, Rodrigo.
  9. Hi and welcome to the forums, Jack addressed a similar behavior previously, it has to do more with erratic behavior but also in chrome. Check this post. Also it would be great if you could set up a live example (fiddle or codepen) in order to take a look at it. Hope this helps a little, Cheers, Rodrigo.
  10. Hi, I haven't been able to reproduce the subject of this post, please check that you're using an updated version of the engine (current version is 1.9.3, cdn links are updated too). Anyway I've created a simple example that sets the z-index property of an element, then tweens top, left and z-index property of the element and the z-index doesn't change beyond the tween var. Something like this: CSS #div1{ position:relative; width:150px; height:150px; background:#00f; margin-top:10px; } JS $(document).ready(function(){ var div1 = $("div#div1"), log1 = $("div#log1"), log2 = $("div#log2"), log3 = $("div#log3"), btn1 = $("button#btn1"), tn1 = new TweenMax.to(div1, 2, {top:200, left:300, rotation:360, zIndex:20, paused:true, onStart:tn1Start, onUpdate:tn1Update, onComplete:tn1Complete}); TweenMax.set(div1, {zIndex:50}) function tn1Start() { log1.children().html(div1.css('z-index')); } function tn1Update() { log2.children().html(div1.css('z-index')); } function tn1Complete() { log3.children().html(div1.css('z-index')); } btn1.click(function() { log1.children().html(''); log2.children().html(''); log3.children().html(''); tn1.play(0); }); }); If you remove the set tween, add the z-index value in the inline style and remove the zIndex in the tween, the element's z-index doesn't change neither: CSS #div1{ position:relative; width:150px; height:150px; background:#00f; margin-top:10px; z-index:50; } tn1 = new TweenMax.to(div1, 2, {top:200, left:300, rotation:360,/* zIndex:20,*/ paused:true, onStart:tn1Start, onUpdate:tn1Update, onComplete:tn1Complete}); //TweenMax.set(div1, {zIndex:50}) Even if you change the position to absolute there's no difference. You can see it working here, and you can make the changes in there to see the behavior: http://codepen.io/rhernando/pen/whDdj Also it would be great if you could set up a working example of your problem in order to check what could be causing the problem. Hope this helps, Cheers, Rodrigo.
  11. Hi, No problemo, glad that it worked. Now regarding the tween keep going even when the timeline is paused, that's an odd behavior, if you check the fiddle you'll see that the background color change from blue to red stop at a purple shade meaning that the timeline is paused stopping all the tweens nested inside it, and if you comment the timeline.pause() line and put inside a console log you'll see the element color changing to red after 10 seconds and the console log triggering at 2.5 seconds, once the short tween has completed, something like this: mc2.updateTo({css:{ width: "50%"}, onComplete: function() { /*timeline.pause();*/ console.log("foo bar"); } }, false); You can see it here: http://jsfiddle.net/rhernando/Zx4Vr/3/ Can you provide a simple example of your code?, in order to see what could be the problem. Cheers, Rodrigo.
  12. Hi, Your site is looking good, keep up the good work. A suggestion will be to keep using backgrounds, the New York background you're using is quite nice, maybe you could create a separated tween for the background and the content, so they can get into position at different speeds. Regarding some of the sites you posted the batman one has a js file: http://www.thedarkknightrises.com/dvd/js/site.js but you're talking over 4000 lines of code so you'll need some patience. You could look at this site for more ideas, hey've done a pretty good job too: http://www.theartofraw.g-star.com/ Here is the main js it's "only" 1300 lines so it's a little more simpler than the batman one http://theartofraw.g-star.com/js/main.js In order to access the js files from a site you need to use developer tools (for webkit based browsers) or firebug (for firefox), those are very useful tools when it comes to see the structure of a site or app. Now in terms of that I wouldn't recommend you to spend a lot of time reading other developers code, but to check the pages and see what is happening and think how could that be done with GSAP, it could take more time but you'll learn quite more in that way. Also there are quite a few forums and sites with tutorials to learn how to do a specific task, then you put them all together (here is where the timeline is your best friend and ally) and voila!! you got your site. As far as structuring a site with GSAP I'm more of the idea of using GSAP to present your site to the visitor and let them use the site in a fun way but always keeping in mind why that person landed on the site, so it's not all about the animations, it's also about the content, a good balance between both is the winning formula, and the beauty of GSAP is that the possibilities are almost infinite in order to create a amazing way to present the content. It's really a one step at a time type of thing so my best advice would be to be patience and just create single samples (there are tons of those in the forum) and then you'll be able to enhance their complexity, and keep in mind that there's always someone here in the forums willing to help you. Cheers, Rodrigo.
  13. Hi, No problemo. I've updated the fiddle to work based on the position of a theoretical scroll bar at the bottom of the page. If you click so the bar goes to the left the timeline will loop forward, if you click so the bar goes right the timeline will loop backwards: http://jsfiddle.net/rhernando/PZB4y/2/ Now keep in mind that this is not based on any type of user interface event like clicks, keys, mouse or scroll pad, just the position of that element, so in your case you should look for an element that changes some css property value and associate that change to the direction of the timeline. Also would be helpful to see some reduced sample of what you're trying to do. Hope this helps, Cheers, Rodrigo.
  14. Hi Spiv, The best way could be to check the variations of the window scrollLeft position (JQuery API) and using conditional logic you can set your tween forward or backwards, something like this: $(document).ready(function(){ var div1 = $("div#div1"), tl1 = new TimelineMax({paused:true, repeat:-1, onReverseComplete:reverseLoop}), isForward = false, isBackward = false, previousPos = $(window).scrollLeft();//original position of the scroll bar, 0 when the page loads tl1 .to(div1, 2, {left:300, top:300}) .to(div1, 2, {rotationZ:360}); function reverseLoop() { //you get the total time of the timeline to set the correct point //for the reverse method, like this you can change your timeline //dynamically. If some tween has a repeat or repeat delay you should //use total duration var tl1Time = tl1.duration(); tl1.reverse(tl1Time); } $(window).scroll(function() { newPos = $(this).scrollLeft();//we get the current position deltaPos = newPos - previousPos;//how the position has varied previousPos = newPos; if(deltaPos > 0 && !isForward) { tl1.play(); isForward = true; isBackward = false; } if(deltaPos < 0 && !isBackward) { tl1.reverse(); isBackward = true; isForward = false; } }); }); You can see it working here: http://jsfiddle.net/rhernando/PZB4y/ Now this is the common ground for scroll bars and this is not your case, I'm going to presume that you're using some custom scroll system or plugin, in that case you could replicate the code above considering what's in this post, all you have to do is use the logic of the $(window).scroll() function into the first setInterval function (getTop) of this fiddle. Unfortunately i couldn't set up a live example now, I'll get one during the afternoon, in the mean time I hope this helps you a little. Cheers, Rodrigo.
  15. Hi and welcome to the forums, I'm by no means an EA expert but I do know two things, first it works with JQuery plugins and you can do amazing things with GSAP (check Chris Gannon's blog), but beyond that I'm not going to be able to help you. you should try the Adobe Edge forums I've read some posts about working with JQuery plugins, and maybe you could try what Chris did in this post of his blog. I hope you can solve your question, it would be nice if you could drop by to tell us how you did it, and sorry for not being of more assistance. Cheers, Rodrigo.
  16. Hi, You also have some syntax issues here too. First once you have defined your tweens as variables in the add method you only put each variable name in the array, the DOM element and the variables to be tweened must go in the variable declaration, not in the add method array. Wrong syntax: var w = 25; var mc1 = new TweenMax(); var mc2 = new TweenMax(); timeline.add( [ mc1.to($('#selector'), 10, {backgroundColor:'red'}), mc2.to($('#selector'), 2.5,{width: w+"%", onComplete: function(){ timeline.pause() }}) ],0,0); Wright syntax: var w = 25; var timeline = new TimelineMax(); var mc1 = new TweenMax.to($('#selector'), 10, {backgroundColor:'red'}); var mc2 = new TweenMax.to($('#selector'), 2.5,{width: w+"%", onComplete: function(){ timeline.pause() }}); timeline.add([mc1, mc2],0,0); Second, in the update method you don't need to indicate the element and the time, only the vars to be changed. Also is not necessary to append, add or insert the update to the timeline, updateTo works as a function so you just use it on the variable you're updating. Wrong: timeline.append( mc2.updateTo($('#selector'), 5, { width: "50%", onComplete: function(){ timeline.pause()} }, false) ); Wright: mc2.updateTo({css:{ width: "50%"}, onComplete: function(){ timeline.pause()} }, false); And finally from the api reference: That is why in the code above you'll see this: mc2.updateTo({css:{ width: "50%"}, onComplete: function(){ timeline.pause()} }, false); Because since those values will be handled by the css plugin, and the tween has already started the tween element already has changed to that so the updateTo function it's going to look for width and is not going to find anything, but if you indicate that is a css plugin value the function will look for css.width and will update the corresponding tween. You can see the code working here: http://jsfiddle.net/rhernando/Zx4Vr/2/ Hope this helps, Cheers, Rodrigo.
  17. Hi Gabriel, Sorry for not getting it from the start As far as getting just one tween the best way would be to create a function and bind that to the particular events, something like this: $(document).ready(function(){ var status = $('#tablet-status'); //Initial tween, pulsating blue halo TweenMax.to(status,1,{boxShadow:'0px 0px 1px 1px blue', yoyo:true, repeat:-1}); function pulseHalo(e) { TweenMax.fromTo(e.data.element, e.data.time, {backgroundColor:e.data.Color, boxShadow:'none'},{boxShadow:'0px 0px 1px 1px' + e.data.Color, yoyo:true, repeat:-1}); } $(window).on('mousedown', {element:status, time:1, Color:'green'},pulseHalo); $(window).on('mouseup', {element:status, time:1, Color:'blue'},pulseHalo); }); You can see it working here: http://jsfiddle.net/rhernando/vUYH3/4/ Hope this time I got it and that it helps, Cheers, Rodrigo.
  18. Thanks for pointing that out Jack, I've corrected the code to this: $(window).mousedown(function(){ unclickStatus.pause(); clickStatus.play(0); }) $(window).mouseup(function(){ clickStatus.pause(); unclickStatus.play(0); }) The updated fiddle is here: http://jsfiddle.net/rhernando/vUYH3/3/ Cheers, Rodrigo.
  19. Hi Gabriel, It seems that you have some unnecessary code here that it's causing your trouble. For example if you indicate in the tween vars repeat:-1 the tween will repeat endlessly so you're going to get that blue or green halo pulsating around your element all the time. If what you're looking for is for the background to change and the box shadow having just one pulse (fade in and then fade out), you have to repeat the tween just once with yoyo: true, like this: var clickStatus = TweenMax.to(status,1,{boxShadow:'0px 0px 1px 1px green', paused:true, yoyo:true, repeat:1}); var unclickStatus = TweenMax.to(status,1,{boxShadow:'0px 0px 1px 1px blue', yoyo:true, repeat:1}) You can see it working here: http://jsfiddle.net/rhernando/vUYH3/1/ Another chance could be to not repeat the tween and reverse it on each mouse event, like this: var status = $('#tablet-status') var clickStatus = TweenMax.to(status,1,{boxShadow:'0px 0px 1px 1px green', backgroundColor:'green', paused:true}); var unclickStatus = TweenMax.to(status,1,{boxShadow:'0px 0px 1px 1px blue', backgroundColor:'blue', paused:true}); $(window).mousedown(function(){ clickStatus.play(0); unclickStatus.reverse(); }) $(window).mouseup(function(){ clickStatus.reverse(); unclickStatus.play(0); }) You can see it working here: http://jsfiddle.net/rhernando/vUYH3/2/ Hope this helps, Cheers, Rodrigo.
  20. Hi, Another alternative would be to put all the faces inside a container and rotate that container using the transform-style property, something like this: CSS .container { perspective: 500px; border: 1px solid black; margin:50px; background:#ccc; width:150px; } #cubeParent{ transform-style:preserve-3d; height:150px; width:150px; } #face1, #face2, #face3{ height:150px; width:150px; position:absolute; } #face1{ background:#00F; } #face2{ background:#f0f; } #face3{ background:#063; } The container style is just to have a reference of the cube's position, and the most important thing is that the #faceCube has transform-style: preserve3d, without that it doesn't works. HTML <p> <button id="btn1">Tween Faces</button><button id="btn2">Rotate Parent</button> </p> <div class="container"> <div id="cubeParent"> <div id="face1"></div> <div id="face2"></div> <div id="face3"></div> </div> </div> JS var tl1 = new TimelineMax({paused:true}), face1 =$("div#face1"), face2 =$("div#face2"), face3 =$("div#face3"), cubeParent = $("div#cubeParent"), btn1 = $("button#btn1"), btn2 = $("button#btn2"); tl1 .to(cubeParent, .5, {z:'-=75'}) .to(face1, .5, {rotationY:90, x:'-=75'}) .to(face2, .5, {rotationX:90, y:'-=75'}, '-=.5') .to(face3, .5, {rotationX:90, y:'+=75'}, '-=.5'); btn1.click(function() { tl1.play(0); }); btn2.click(function() { TweenMax.to(cubeParent, .5, {rotationY:'+=45'}); }); You can see it working here: http://jsfiddle.net/rhernando/PfPZm/ Hope this helps, Cheers, Rodrigo.
  21. Hi, I've updated the fiddle in order to make it work with images. http://jsfiddle.net/fFJ29/1/ Cheers, Rodrigo.
  22. Hi Jamie, That could be happening because you're tweening both the container and the div with the image, thus resulting in the sepia image taking a good shake in the process. One solution would be to translate both elements using x and y instead of using top and left, like that you could control the transform origin point, which could be helpful. But the best choice would be to tween the clip property of the container that holds the div with the sepia image, something like this: #mainCont{ width:400px; height:400px; background:#f0f; overflow:hidden; } #firstCont{ width:400px; height:500px; background:#0FF transparent; position:absolute; overflow:hidden; clip:rect(0px, 400px, 500px, 0px) } #childElem{ width:400px; height:400px; top:50px; left:50px; background:#00f; position:relative; } then the HTML:<div id="mainCont"> <div id="firstCont"> <div id="childElem">alo alo</div> </div> </div> And finally the JS:$(document).ready(function(){ var firstCont = $("div#firstCont"), child = $("div#childElem"), btn1 = $("button#btn1"), tn2 = new TweenMax.to(firstCont, 2, {clip:'rect(0, 0, 500, 0)', paused:true, repeat:1, yoyo:true}), tn1 = new TweenMax.to(firstCont, 2, {left:0, paused:true}); TweenMax.set(firstCont, {rotation:11, left:-41, top:-52}); TweenMax.set(child, {rotation:-11, top:50, left:50}); btn1.click(function() { tn2.play(0); }); }); You can see it in action here:http://jsfiddle.net/rhernando/fFJ29/ Hope this helps, Cheers, Rodrigo.
  23. Rodrigo

    Tutorials?

    Hi, Since this post came up, I started working in a tutorial about integrating GSAP JS with wordpress, but because of work and problems with the server where my blog was in I couldn't publish it before, therefore I don't know how useful can be right now, but I'm hoping that in the future it could help someone. It deals with the basic of using GSAP JS in wordpress and how can you use it on specific posts and pages: http://codeaway.info/incorporating-greensock-ap-js-into-wordpress/ Cheers, Rodrigo.
  24. Rodrigo

    clip in IE8

    Hi, As far as clip I haven't worked with it yet, so I couldn't tell you why is not working with IE8, but my guess will be that in order to make it work in IE8 could cause a performance problem (you just got to love IE8 ). As for a fallback is not that hard, check this post in order to see how: http://forums.greensock.com/topic/7256-ie-9-fallback-for-3d-transform/ Hope this helps, Cheers, Rodrigo.
  25. Rodrigo

    Swinging sign?

    Hi and welcome to the forums, You can see it in action here: http://jsfiddle.net/rhernando/qTSnC/3/ But since the css plugin supports css3 3D transforms all that workaround code is no longer necessary, you can achieve that with just a few lines of code and without including all the vendors prefix (the engine does it for you). It would be something like this: $(document).ready(function(){ var img1 = $("img#img1"), tl1 = new TimelineMax({paused:true}), btn1 = $("button#btn1"); //you set up the default perspective for all elements in the DOM CSSPlugin.defaultTransformPerspective = 400; //the point from which the sign is hanging TweenMax.set(img1, {transformOrigin:'50% 0%'}); tl1 .to(img1, .2, {rotationX:-20}) .to(img1, .2, {rotationX: 20}) .to(img1, 2, {rotationX:0, ease:Elastic.easeOut}); btn1.click(function() { tl1.play(0); }); }); You can see it in action here: http://jsfiddle.net/rhernando/qTSnC/4/ Hope this helps, Cheers, Rodrigo.
×
×
  • Create New...