Jump to content
Search Community

GreenSock last won the day on April 21

GreenSock had the most liked content!

GreenSock

Administrators
  • Posts

    23,139
  • Joined

  • Last visited

  • Days Won

    817

Everything posted by GreenSock

  1. Great discussion, guys. Sorry I'm late to the party. Jonathan is exactly correct - the issue you described simply has to do with an order-of-operation thing. GSAP always uses the same consistent order so that you can depend on the results and you don't get the cross-contamination that often happens when you string transforms together in CSS. It has nothing to do with nesting or parent elements - it's just order-of-operation. If you rotate and then move, it's different than moving and then rotating. In my personal opinion, it's much more intuitive to always move then rotate so that the axis of movement doesn't shift with rotation. While I firmly believe this is generally more intuitive for animators, it's not necessarily "better". One could argue that our consistency is a limitation ("what if I want to have the axis of movement shift with rotation?"). CSS technically gives you more flexibility in that sense. But flexibility can be a double-edged sword (causing more confusion). I also like the idea of having even better docs/resources to help people with SVG "quirks". We'll look for ways to do that better in the future. If anyone wants to tackle that sort of thing as a blog post or something, please feel free to get in contact with us and we very well may publish it on our site. Or even just a list of pointers. Happy tweening!
  2. Looks great, venn. Glad you got it all figured out. Nice work. Let us know if you need anything else.
  3. I read your post a few times and I'm struggling to figure out exactly what you were suggesting change in the core exactly. Have you tried implementing your solution in the Animation.as core? Perhaps you can show me what you mean. Please keep in mind that the ActionScript tools have been sunset (no longer actively maintained), as the market made it very clear that it preferred HTML5/JS solutions and we're focusing our efforts there to help the largest portion of our user base. This certainly seems like an edge case that you described because it has never come up in all the years that the ActionScript tools have been out there (I think it was around 2006 when it started) so unless it's clearly a bug in GreenSock code, we probably won't release an update but you're absolutely welcome to tweak the source code to work around this issue you're running into.
  4. Nope. We don't inject any "phone home" code that tracks usage or causes the plugins to suddenly stop working on a certain date. Hopefully our tools prove so valuable and profitable to you that you'll gladly renew every year to keep getting access to the goodies.
  5. First of all, welcome to the forums and congrats on the boilerplate project. Do you have a sample codepen or something that we can look at? Was there a particular GSAP-related question? Or were you asking us to get familiar with the whole project, how things are working together and structured, read through all the code and offer ideas for improvement? Usually you'll get the best chance of getting solid answers here if you pose a specific question and provide a reduced test case that shows the situation you're struggling with.
  6. I'm not sure I entirely understand the effect you're after, but I noticed a few problems: You were trying to select things with jQuery but you weren't loading jQuery. For example, you had a bunch of $('#dart1') references but those won't work if you don't load jQuery ("$" would be undefined). But there's no reason to use jQuery to select that stuff - you can simplify your code by just letting GSAP do that selection for you. Delete your $('...') wrappers and it'll work. You said you wanted the back-and-forth to stop after a few times, but you had repeat:-1 which means "forever". I changed it to repeat:2 so that it repeats twice, but change that to whatever you want. You don't need to wrap your CSS properties in a css:{} object although it's totally fine. If you omit that, GSAP will automatically add it for you. So you can keep your code more consolidated. To make your code even shorter, you can chain things. There's no need to play() the animation at the end - by default, all animations play by default. Here's an updated version with more concise code: http://codepen.io/anon/pen/VeBWqW Does that help?
  7. Have you ever wondered why GreenSock doesn't use a more common open source license like MIT? Sometimes our licensing model is misunderstood but hopefully after reading this article you'll see why it is so foundational to the success of our tools and why it ultimately benefits users too. Open source is awesome! If you had to write and maintain your own jQuery or React or GSAP, could you do it? Would it be as refined and reliable? Probably not. How many times have you found a library or chunk of code on github that saved you hours of development time? Open source can be a quick path to great results. It also serves as a jumping-off point for up-and-coming developers to share their innovation, inspiring others to write better code. Open source is easily one of the most influential movements in the entire development community. We're certainly not anti-open-source. Quite the contrary. Open source is *not* always awesome Despite its strengths, there are some dark sides to open source. Many projects are riddled with bugs, poorly documented, and sometimes even dangerous to use. The web is littered with abandoned projects that once seemed promising. It's like a clearance bin you'd find at a discount store; there may be some treasures in there, but you'll have to dig through a lot of undesirables to find the gems. In an industry that's inundated weekly with "hot new" libraries, all just a click away for free, it can be tough to figure out which ones to gamble on. Commitment required(?) Some libraries are one-trick ponies that don't require ongoing commitment. For example, a math library that performs matrix operations or a formatting library. If the author abandons the project, it's no big deal. Other projects, like a full-featured animation library, are much more complex and leverage browser-level optimizations that are moving targets. Vendor-specific bugs need to be worked around or new browser features get introduced that beg to be animated. Plus, animation is the most performance-sensitive aspect of the user experience, so a commitment to ongoing optimization pays dividends. Beyond the code itself, what about community, documentation and examples? These become increasingly important as a library's feature set expands and companies standardize on it, needing to train new staff. Again, some projects have very little need for ongoing support but for GreenSock, it seemed essential. Hampered by success Paradoxically, success is the very thing that kills many open source projects because they don't have a funding mechanism to underwrite all the demands. The project that was once the twinkle in the author's eyes often ends up being a thorn in their side. They can't afford (or don't really want) to keep up with the demands. That's not to say that all open source projects suffer this fate. We have the utmost respect for open source authors, and we don't mean to diminish anyone's hard work or generosity. But there are some common frailties of open source projects in general that GreenSock aims to avoid. Having built and maintained a popular library for over a decade, we've learned that one of the most important factors in keeping a complex project like GSAP vibrant is the licensing model. Our goal was to make GreenSock tools not only accessible (which MIT does a great job of), but also sustainable, business-friendly, consistent, and respectful. We needed a license that would have the best chance of facilitating those goals, as described below: Sustainable Scores of animation libraries have come and gone over the years. We didn't want to be just another flash in the pan that ultimately leaves users feeling abandoned. Trust is paramount for us. We wanted the GreenSock brand to be associated with an exceptionally high level of commitment and reliability. Earning that trust requires a consistent, full-time effort so we considered these funding models: Self-funded - most open source projects are self-funded, meaning that the authors cover all the costs themselves, typically by donating their time and resources. It's noble and perfectly adequate for many projects. An MIT (or similar) license is a great fit because it allows an author to share code with almost zero strings attached. However, the commitment level tends to be unreliable and self-funded projects are rarely sustained long-term. With our particular project and goals, this wasn't a good fit. Corporate sponsorship - sometimes huge companies like Adobe, Microsoft, Facebook, or Google are willing to contribute funds to encourage a project. They usually have a vested interest in its success. For example, Adobe helps fund CreateJS which is a set of libraries that its very own Adobe Animate (formerly Flash) relies on. React is underwritten by Facebook. This can be a great way to offload development costs onto some deep-pocketed corporations, keeping it totally free for end users. The risk, however, is that if the project goals don't line up with the corporation's agenda (which can shift), funding gets yanked or the developers get pressured to go in a direction that may not be good for end users. If the company has a bad year, they may re-allocate resources. The project is ultimately beholden to a few key sponsors with potentially conflicting objectives. This wasn't something we were comfortable with although we acknowledge that it's a great solution for certain projects. Private investors - famo.us is probably the most well-known example of an "open source" project that took on private investors. A few years and $30,000,000+ later, it stopped development of its open source library and laid off a large chunk of its staff, deciding to "pivot" in a more profitable commercial direction. Private investors want a return on their investment (which is completely understandable) but an MIT license can make that very difficult because it leaves the IP (intellectual property) wide open for anyone to steal, including competitors. Similar to corporate sponsorship, projects who get their funding this way are beholden to a few key stakeholders who may have a very different agenda than end users. Again, this wasn't an ideal fit for GreenSock. User-funded - when funding comes directly from end users, it creates a wider base (more stable) and incentivizes the kind of innovation that end users actually care about, otherwise funding naturally dries up. That's a healthy dynamic for aligning agendas. Rather than serving a small set of outside investors looking for a return or a corporation with profit centers to bolster, end users play the central role. The downside, of course, is that certain features or use cases involve a fee. That can be a tough pill to swallow for some, especially when "free" MIT-licensed options abound. And it takes time to build up a wide base of users who literally "buy in". Trust and longevity are key. But a surprising number of users embrace this model because it allows them to "vote" with their dollars and participate in making a product they love continue to thrive. While this model certainly isn't for everyone, it has been a good fit for GreenSock. Accessible Sometimes we hear comments like "you can't use GreenSock in commercial projects without a license." WRONG. [loud buzzer noise]. Our license was designed to make the tools extremely accessible, even permitting usage in one-off commercial projects (where you get paid a one-time fee by a single client). And of course it's free to use in non-commercial projects (see licensing page for details). That way, a certain breed of power-user provides the funding that benefits everyone. An estimated 95%+ of our users never pay us a dime. So while a rare type of commercial project does require a "Business Green" Club GreenSock membership (which covers an unlimited number of projects while active), the vast majority of users never need that special license. This accessibility was a cornerstone of our approach. We didn't want to hide all the tools behind an intimidating paywall or make all commercial uses trigger a fee. Yet it couldn't be as unrestrained as MIT because that would create vulnerabilities for us and our users (as described in this article). Another way we keep the core tools accessible is by freely exposing the raw source code both on github and in our downloads. Users can peek under the hood and see how things work. That makes troubleshooting and learning much easier. We tried to strike a balance of openness and healthy insulation from the frailties of MIT. Business-friendly Most businesses are very concerned about IP infringement, lawsuits, and indemnification. The "no strings attached and no warranties" nature of MIT is both a strength and a weakness. It simplifies sharing, but what if an open source library leverages someone else's IP? What if it uses "copyleft" code that infects anything it touches, requiring that all projects using it be open-sourced as well? That could be a huge problem for businesses with proprietary tools in a competitive market. GreenSock's license doesn't have any attribution requirements, nor does it impose share-alike rules like GNU and Creative Commons. Furthermore, it contains warranties that aren't found in MIT-like licenses, making GreenSock more business-friendly. It survived the software audits and legal review process at reputable companies like Google, Sony, EA, Intel, every major ad network, and many others. This vetting is necessary in the business world where there is so much at stake. The license also allows for code edits to be made for bug fixes. Typically that's not necessary because we handle it as a part of our ongoing support efforts, but businesses appreciate knowing that if we relaxed those efforts, they'd still be able to get their project working if they ran into a bug and needed to squash it themselves. Consistent MIT-licensed projects spread on github where it's trivial to fork them and start making custom flavors. That's ideal for authors whose goal is to start something and then step back to let the community run with it. But that can lead to a lot of confusion as different flavors start popping up with incongruent feature sets and incompatibilities. Focus and direction are easily lost. If there's no driver (or too many drivers), it can be a scary ride for the passengers. We wanted the GreenSock brand to convey a certain level of consistency and reliability. That's part of the reason we don't generally accept pull requests - we keep a tight reign on the codebase so that we are intimately aware of every piece. That allows us to not only support it, but also stand behind our IP warranties. Respectful We believe that if we respect our users, they'll generally reciprocate that respect. Most people want to do the right thing. So we don't inject "phone home" code that reports usage or causes things to suddenly stop working when a membership expires. We don't force business customers register each user or enter serial numbers to activate seats. We don't limit installations or the number of projects that the license covers. We don't burn extra energy policing usage. We've never sued anyone. We funnel our energy into refining the tools, innovating, educating, and supporting our users. We put a lot of effort into creating a positive, respectful culture in the forums which boast over 50,000 members and 80,000 posts. We don't charge a dime for support there, and we don't shamelessly promote Club GreenSock memberships. Again, we trust that if we keep trying to provide value, people will notice and gladly sign up to support the efforts at some point. An unintended benefit of our licensing model has been that it naturally weeds out users who expect everything for free and don't recognize the substantial effort that goes into these projects. We're left with users who tend to be very respectful and trustworthy (exactly who we like to serve). Conclusion GreenSock isn't the typical open source project. Our licensing model reflects that. It offers a blend of sustainability, accessibility, business-friendliness, consistency, and respect that'd be very difficult (or impossible) to accomplish with an MIT-like license. It's not necessarily "better" (open source is fantastic, really) but in our particular case it aligned more closely with the project goals. In fact, many companies have chosen GreenSock because of the license, not in spite of it. They wanted to invest in a platform that had a certain level of commitment behind it that's rare in the open source world. After a decade, the experiment seems to be working and we have our supporters to thank for that. We've been humbled and inspired by Club GreenSock members throughout the years. It's a privilege to create these tools and serve the community. We're grateful for their partnership which makes it all possible.
  8. I think it's just a logic issue in your code - you've got a staggerTo() that's animating y to -500 (fine), and then you've got a staggerFrom() that's animating from the same value (y:-500). Remember, a "from" tween animates from whatever its current value is to whatever you define. So if your staggerTo() runs and y gets to -500 and then you try doing a staggerFrom() y:-500, there's absolutely nothing to do because the starting and ending values are identical. You're basically saying "animate from y:-500 to y:-500". No movement. I'm not exactly sure what effect you're going for, but maybe it'd be easiest for you to just use staggerTo() tweens since sometimes "from" tweens can trip people up logic-wise. Perhaps you want one staggerTo() y:-500 and the other staggerTo() y:0? Or if you're trying to make it move by a relative amount each time, like "500 less than what it is now", you can use the "-=" prefix, like y:"-=500".
  9. Upgrading does not reset the expiration date, no.
  10. Morphing is just for the shape itself, but all you need to do to animate the fill is add it to the tween, like: TweenMax.to("#start", 5, {morphSVG:"#end", yoyo:true, fill:"#FF1D25", repeat:-1}); Here's an updated codepen: http://codepen.io/anon/pen/vLjVay
  11. I had the same thought. SVG elements (inside the <svg>) don't affect document flow at all unless I'm completely misinformed.
  12. I think you meant to tween the "time", not "duration". Very different
  13. I've personally never really tried, but I'd imagine that the browser won't allow that sort of thing due to security concerns. It'd be a bit scary if code inside iframes could "watch" my mouse outside of their context. Maybe if both are from the same domain and the security restrictions are properly appeased.
  14. That's great, @slopps, thanks for sharing your solution.
  15. I see what you mean, Ninili, and I really appreciate you giving details about exactly where the issue was in the code. It is indeed caused by your element being wrapped in a jQuery object (which should be pretty easy to fix). I'll make the necessary adjustments in the next release, though, so that jQuery objects work too.
  16. Yep, it had to do with the jQuery wrapper(s). We'll add some code to the next version to work around that.
  17. @ro-achterberg, you sound a lot like me: a guy who doesn't like just throwing money at some pre-packaged plugin rather than digging in and understanding (or at least trying really hard to understand) the inner-mechanics and the "why" behind things. I get it. In fact, I make GreenSock tools for guys exactly like you. They're not aimed at the typical jQuery plugin consumer - they're made for top-level animators who have put the time in to understand the challenges and noticed that GSAP solves them as well as (or maybe even better than) they'd do for themselves. Perhaps that's why almost every award-winning "site of the year" since GSAP was introduced has used it. The folks who build the wiz-bang sites tend to be a lot like you and me in terms of seeking a deeper understanding before committing to a toolset. Maybe it gives you a little comfort knowing they tend to be big GSAP fans. But alas, if you're like me, that probably doesn't quite satisfy Personally, I have a strong aversion to using libraries because I like to build all my own stuff from scratch. However, there are some exceptions. When I come across a tool that impresses me enough because of the sheer volume of work it requires (like THREE.js), I recognize it's smarter of me to just let the experts handle all that fine-tuning and 3D math rather than me re-inventing the wheel. But I at least go far enough to understand a lot of the mechanics before I decide "yep, I'm better off entrusting that to them." Like Carl said, please poke around the forums and familiarize yourself with how we typically run conversations around here. We are very careful not to be pushy with getting people to sign up. The vast majority of people who come here and get help don't pay a dime...ever. And yet we (and the amazing moderators) do our best to serve them nevertheless. A lot of business people I've talked to are shocked that we operate this way (they think it's stupid of us). We, however, believe it's all part of what we stand for and what we try to deliver as a brand. Trust is very important to us which is also why we get so discouraged when we hear a response like yours, indicating that we disappointed you. It's a big deal to us. Carl and I exercise a lot of restraint when it comes to talking about the bonus plugins but it's very difficult because often they are EXACTLY what is needed in that moment. We put so much time and energy solving a particular challenge and then when the need arises, we want to gush about how well this bonus plugin solves things for the user, and avoids major headaches. But we risk sounding "pushy", so we try to tone it down or not say much. Perhaps Carl relaxed his filter here, but I really believe he was offering the best answer he possibly could. He had your best interest in mind, not just funneling some $ into our pockets (frankly, one membership is a drop in the bucket compared to all our expenses). We absolutely, positively don't want anyone to sign up who's not thrilled with the value they receive. We want rabid, loyal fans. The forums don't serve as a promotion venue - we only mention a bonus plugin when it's very clearly beneficial to the end user. One piece of background that might help shed some light on Carl's initial response (which I still think was rock solid, though I don't blame you for feeling like it was a hard-sell): most people in the forums are extremely respectful and kind, but we have occasionally had people show up here who literally asked us to give them a tutorial on how we built one of the bonus plugins, what it does, and how they could basically copy it themselves so that they wouldn't have to pay any $ for it. Seriously. No kidding. We even asked them to confirm that's what they were asking, and...yep. It can feel like quite a slap in the face when we try so hard to provide so much for free and devote our full-time careers to building these tools that solve various problems and they turn up their nose at pitching in $50 and instead want us to burn hours more of our time explaining how to replicate our efforts to avoid paying us for all the time we invested. I totally understand that you weren't doing that but part of the conversation started smelling a little bit like that and I suspect that's what drove the response. Answering how you could do it without the plugin would essentially lead us down a similar path, like "you could do it like ___ but then IE has this bug that you'll need to work around with ____ and Firefox requires _____ and structurally it's more efficient to do the computations like ____..." and pretty soon it's a tutorial on how we built the plugin and all the "gotchas" we solved...along with the blueprints that make it easy to avoid signing up (a pretty horrible business practice). But again, I understand that you didn't mean it that way at all. I really like PointC's comment about it ultimately boiling down to a math equation - how much is your hourly rate, and how many hours might this save you? But I guess that only matters AFTER you've been convinced that you can trust the tool (and its authors), and that you've done enough research to determine that it's not worth doing yourself. I'm sorry about the disappointment you experienced here, but I sure hope we can earn your trust and loyalty at some point. And please keep in mind that you're very welcome in these forums - you won't be looked down upon if you're not a paying member. We're here to help as best we can. Happy tweening!
  18. @slopps, I see what you mean but there are two challenges with that: Most people seem to only need a boolean which is cheaper to calculate. Changing the behavior to return a percentage over overlap would mean that everyone pays that higher processing cost (seems a bit wasteful) We're very reluctant to alter method signatures because it could break people's existing code. We'll do it on occasion if we feel very strongly that it's a significant upgrade and worth the potential backlash from legacy code, but I'm not sure that in this particular case it rises to that level. If we get a lot of people requesting this, we're totally willing to reconsider.
  19. Our cape manufacturer is having some labor union problems, but yes, the rest of the merchandise should be in stores soon.
  20. I talked to our apparel guy and he said he'd add that to his online shop this week (probably by Wednesday). http://www.djmdesigns.net/#!greensock-apparel/c18zz
  21. Our contact at Sizmek said that he's pretty confident that nothing is changing with regard to GSAP specifically - it should still be exempt from file size calculations when properly referenced even after February 1st. Furthermore, he said: So this all seems to be good news for GreenSock users like yourself Let us know if you get any further clarification from the Sizmek folks. Our contact said he was going to do some more research internally and get back to us if he finds any additional info that's different than what he told us already (it's a big company and probably in a state of flux due to the merger with PointRoll).
  22. Oh, sorry, I believe this is already in the released version that has been in the wild for a few weeks. I forgot to post a note here in this thread.
  23. Yeah, it's a bit confusing because when anyone hears "WebGL", they instantly think 3D because that's really what it's perfect for and what most people leverage it for, but from what I can tell with Adobe, they're just using it to accelerate 2D rendering. I scanned that article you linked to, and I still don't see any mention of 3D properties like rotationX/rotationY. I kinda suspect that it's not gonna be supported, but hopefully they'll eventually get there. It only makes sense. I know that adding 3D rendering is no trivial task, though. It affects a LOT of things even in the 2D stuff. So I wouldn't be surprised if it's another year or more before they add support for true 3D properties.
  24. Yep, it was just an error in the conditional logic you were using. You've got it solved now, right? Just making sure.
×
×
  • Create New...