GreenSock last won the day on March 12

GreenSock had the most liked content!


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by GreenSock

  1. Here's a super simple example: Click anywhere to toggle between a timeScale of 1 and 4. Initially it's got 0.5 seconds inbetween each "frame" (at a timeScale of 1). So jumping to a timeScale of 4 means that there are 0.125 seconds between each one (0.5 / 4). And you don't have to immediately change the timeScale - you can gradually change it by animating it, like: //animates tl.timeScale() to 4 over the course of 1 second, 1, {timeScale:4}); I hope that helps.
  2. Deep question about licensing

    Good questions, @Babakness. Your questions aren't annoying at all; in fact, we love folks like you who show so much respect for the licensing terms and aim to honor the work of other developers. You're exactly the type of customer we love to serve. I completely understand your caution too; if costs aren't clear up front, it makes it very difficult to gauge if GSAP's awesomeness is worth building on. Don't worry; we try very hard to be more than fair and always air on the side of generosity with our customers. In 18 years of being in business, we've never sued anyone and our business model is almost entirely based on the honor system. Hopefully our track record proves that GreenSock isn't a scary company to get involved with. Trust is a BIG deal to us. The "Simply Green" and "Shockingly Green" memberships include various bonus plugins but are intended for individuals, thus only the standard license applies. The "Business Green" memberships get the expanded coverage of a commercial license (and all the bonus plugins of course). -- 2 & 4: Your license covers an unlimited number of your Work Products while it’s active. The only other caveat is that it covers your unedited work, meaning that if your clients/customers want to make any changes, they’d need to get their own license. Otherwise, it’d make it easy for a huge company like Microsoft to circumvent the license by hiring a freelancer to start a project and then take it in-house and piggy-back on that single-developer license without getting their own license for their numerous developers. See what I mean? But again, all of the work you do is covered as long as it’s not edited by others outside your organization. If, for example, Company A develops a Work Product that uses TweenMax and sells it to Company B who will be licensing it to end users, Company A should have a “Business Green” membership. Company B would not be required to have a membership. If, however, Company B prefers to maintain a membership instead, that is perfectly acceptable as long as it wouldn’t reduce the club level, meaning if the development company has 20 developers and Company B has 1 developer, it wouldn’t be fair to circumvent the terms by only having Company B get a single developer membership. A 20-developer membership would be required. Again, only one of the companies needs to have the license, not both. -- 3: The ads themselves don't require any special license, no. If the site that's displaying them uses GSAP and it is indeed charging multiple users a fee (in this case, the advertisers) for something related to that product (the site in this case), then yes, technically it'd be appropriate to get the proper "Business Green" license. -- 5: Only if they update GreenSock-related code. In other words, if the "fresh out of college" developers never touch a line of GSAP code, there's no need for that company to get their own license. The original developer's license would cover it. -- 6: Wow, that's a big company! We'd love to have them as a customer (ha ha). You only have to count the number of developers who may interact with GreenSock tools. So in your example, that's only 1 developer, not 50,000. -- So in summary: You only need to count the number of developers who'd interact with GreenSock tools. Your license covers all of your unedited work, even if your clients are reselling it. If your customer wants to make edits themselves, they should get their own license. Our licensing is based on the honor system; we've never sued anyone. No need to be scared that GSAP has a bunch of thorny tentacles that'll invade your work and make things really awkward and expensive. Hopefully our licensing model actually boost your confidence in building on GSAP because it's what has allowed us to continue to innovate and support our products, unlike most other libraries that fade after a matter of months. GSAP is very unique in this regard. Does that help? Don't hesitate to ask if you've got any other questions.
  3. Multi-touch breaks Draggable

    Yeah, that's kinda by design because multi-touch typically enables other stuff like pinching/zooming. But to get the behavior you're after, why don't you set allowNativeTouchScrolling:false on your Draggable and then add this: function ignoreEvent(e) { e.preventDefault(); e.stopImmediatePropagation(); if (e.preventManipulation) { e.preventManipulation(); } return false; } document.addEventListener("touchstart", ignoreEvent, false); document.addEventListener("pointerdown", ignoreEvent, false); Does that help?
  4. You won't realistically be able to have anything run at 120fps in the browser. requestAnimationFrame runs at 60fps max, plus it'd be a lot to ask of the browser to flip through images like that. But the technique I described above should still work fine - it'll just update the screen 60 times per second but it'd get through the images in the same way (as if it were 120fps...just with fewer screen updates in the process). I imagine a video might be lighter size-wise. Good luck, though.
  5. Force onDrag to Fire

    One more minor note: why did you use a "pointerup" type of PointerEvent in your pointerMove()? Shouldn't that be a "pointermove"?
  6. Force onDrag to Fire

    Ah, I misread and thought you were just trying to simulate (visually) a drag without an actual drag (which in my head sounded like basically an animation). But you're trying to do testing, so you're saying it's important to make it literally act in the environment just as if a real person was pressing/dragging/releasing, and ensuring that Draggable responds accordingly. Right? If so, that sounds like a question for Appium. Draggable just relies on mouse/touch/pointer events to do its thing, so I'd guess that as long as you're firing those in the proper way to simulate the drag, it'd work fine. But I have noticed that certain environments (browsers) often won't allow you to simulate REAL mouse/touch/pointer events that are trusted (for security reasons). Thus I'm not 100% sure that what you're asking for is possible, at least in the browser. But perhaps Appium makes it possible.
  7. I might be misunderstanding the question, but perhaps you could simply set up a TimelineLite with a bunch of evenly-spaced set() calls that either change the visibility of images or a single image's src (though the latter could be problematic performance-wise because the browser would have to load them at that point), and then update the timeScale() of that TimelineLite in accordance with your tempo. Just an idea.
  8. Force onDrag to Fire

    I wonder why you'd even need to involve Draggable at all in that scenario - why not just or something? (Meaning animate it). You could use an onStart/onUpdate/onComplete to trigger any updates that you need. Perhaps I'm just misunderstanding the question though.
  9. A timeline is just a wrapper for tweens (and other timelines), so its duration is always based on its contents. When you alter its duration, it simply alters the timeScale accordingly so that it APPEARS to take that long to play, that's all. Make sense?
  10. Can't use ThrowProps in Webpack

    Thanks, @gogo125, for posting the help for others!
  11. Whatsup Guys?

    Ha ha. Well, the forums are very much alive and kicking...just not quite as much activity in the banner-specific one, that's all. Maybe because when you use GSAP in your banners, things go so smoothly that everybody is happy. No need for questions
  12. Yep, @Pete Barr, I'd be happy to take a peek at a reduced test case. My only guess is that perhaps the way you've got things configured visually is causing Chrome to perform some heavy-lifting at that spot due to the overall size of the "dirty" rendering area (imagine drawing a box around the portion of the screen that must be updated/rendered). For example, maybe there's some threshold you're crossing where Chrome is like "if the dirty area is larger than 1000px in either direction, we've gotta bust it apart into multiple chunks and feed the pieces back to the GPU as textures..." Again, I'm totally guessing here. It smells like a graphics rendering thing though. I highly doubt it's related to GSAP in any way. Shoot me a PM or email if you'd like me to take a look at something.
  13. ZoomIn with Bounce

    Are you talking about this?: Happy tweening!
  14. Lines appearing after animation (issue on Chrome, Opera)

    Nice work, @Visual-Q. Very odd that you have to do all that just to get Chrome to render properly. Sheesh. I actually did see that odd line about 75% of the way down the door. SO WEIRD!
  15. Splittext and Denavagari

    Yeah, more cumbersome to use quite frankly. I don't think people's brains work that way, but you could actually implement something like that using the function-based thing I explained earlier (using an external variable that keeps track of the index). Not exactly simple, but entirely possible. I appreciate the input! If anyone has more feedback about the current implementation of specialChars, let me know so that I can ponder it before shoving this into the "official" release.
  16. Splittext and Denavagari

    Oh, okay. Well, that seems pretty cumbersome BUT maybe this is the time to let you in on a little secret - I set it up so that you can define specialChars as a function. As it iterates through each character in the string, it feeds the REMAINING text to the function and then you return a number corresponding to how many characters should be grouped in that iteration. So technically you could apply whatever logic you want! So, for example, if the string is "ABCDE", the function would receive "ABCDE" as the parameter and if you returned 1 or 0 or null, then it'd take "A" as the character and the next time the function gets called, it'd receive "BCDE" and if you return 3, it would tell SplitText to group "BCD" as if it were a single character, so the next time the function gets called, it'd receive "E". Make sense? So again, my goal was to make it super flexible and let you run any logic rather than only being able to feed in an array (though that's probably the most common use case). I wasn't keen on necessarily exposing that option at first, just so I don't confuse people. But I like having it there for those edge cases and I can be like "oh, guess what - we've already got you's a secret feature..."
  17. Lines appearing after animation (issue on Chrome, Opera)

    That's probably because there's no more 3D transforms on the element. When there are any 3D transforms, most browsers treat it COMPLETELY differently from a rendering perspective, layerizing it and pushing it over to the GPU to handle in 3D space.
  18. Splittext and Denavagari

    I didn't quite follow that - could you explain further, @Visual-Q? Are you suggesting a new/different feature than the specialChars one I illustrated above? @Acccent I'm not even sure how to approach the whole rtl thing and the way that those characters intermingle and group in various [odd to me] ways. I wonder if anyone would realistically WANT to split those up by characters. If you've got any specific suggestions/techniques, I'm all ears.
  19. Lines appearing after animation (issue on Chrome, Opera)

    I don't see those lines, sorry. But here's a similar animation with GSAP: Sounds like a browser rendering issue, possibly related to your video card. Perhaps you'll need to adjust the size of the door so that it's a pixel (or half pixel) larger in each direction.
  20. Lines appearing after animation (issue on Chrome, Opera)

    Hm, your codepen doesn't seem to use GSAP at all. Strangely, I noticed that adding "border: 1px solid black" to the door seemed to clear things up in my browser at least. Does that help on your end?
  21. PIXI Container + GSAP

    Also note that there's a PixiPlugin that's built specifically to make Pixi.JS animations easier: Happy tweening!
  22. Search on page /learning not working

    Thanks for pointing that out. We'll look into it ASAP.
  23. Splittext and Denavagari

    Okay, how about if I add a "specialChars" property that you can pass into SplitText and it'll check that array for special characters and keep them grouped properly? Here's a demo (you may need to clear your cache): That provides flexibility to get around odd scenarios like this. If everybody likes it, I can put it into the official downloads (the version in that codepen only works on codepen). So it'd look like: new SplitText("#split", { type:"chars", specialChars:["पा", "क्ष", "यो", "द्यो", "का", "सा", "धा", "मी", "पा", "है"] }); Cool?
  24. Splittext and Denavagari

    Check this out - I removed SplitText completely and merely iterated through each character of the text and wrapped it manually in a <span>: So it seems like it's unrelated to SplitText. It must be that certain pairs of characters are merged somehow by the browser to form one character. See what I mean?
  25. No, in either case you have total control over where the animation gets placed into the timeline. You simply use the position parameter (in either case). See for more details. Does that help? Think of to() as a shortcut: //long, with add(): tl.add(, 1, {x:100}), "+=2"); //short (same result):, 1, {x:100}, "+=2");