Storyline360, Animation and GSAP ( Greensock )

Oct 23, 2020

Hi,

Trying to figure something out in SL360 i stumbled upon  the ds-bootstrap.min.js file thats added to the lib/scripts folder when publishing a Storyline360 file. In that file are GSAP(Greensock) references... some samples..
/*!
* VERSION: 1.11.8
* DATE: 2014-05-13
* UPDATES AND DOCS AT: http://www.greensock.com
*
* @license Copyright (c) 2008-2014, GreenSock. All rights reserved.
* This work is subject to the terms at http://www.greensock.com/terms_of_use.html or for
* Club GreenSock members, the software agreement that was issued with your membership.
*
* @author: Jack Doyle, jack@greensock.com
*/

What i can find in that file that both GSAP CSS-plugin, easing and basic GSAP tweens are somehow used in Storyline.
Bad news however is that its a really old version they have implemented... from 2014... version 1.11.8, whereas the current GSAP version is version 3.5.1 !!!

Big advantages of the newer GSAP are mobile performance, speed and perfect control over SVG. So Storyline would certainly benefit from updating their internal used Storyline to the latest version.

As Storyline probably uses GSAP for all its animation features, the transitions and everything, i personally would really like it to have the control of GSAP in the hands of the frontend-user. I do use GSAP constantly in my elearning projects, but always have to add the newest version..

Is there an option to get the latest version of GSAP implemented in Storyline?
And can we have some better scripted control over Storyline elements...as you do use it already anyway?

Kind regards,
Math Notermans

 

63 Replies
Jürgen Schoenemeyer

interesting news - the coding depends on which characters really used in the text of the complete course (with the same font)

tests are made with Firefox - therefore the "good" view of non-printable characters

decoding

txt = txt.replaceAll("\uE000", "f");
txt = txt.replaceAll("\uE001", "ff");
txt = txt.replaceAll("\uE002", "fi");
txt = txt.replaceAll("\uE003", "fl");
txt = txt.replaceAll("\uE004", "ffi");
txt = txt.replaceAll("\uE005", "ffl");

Example 1: in the course is used "f – ff – fi – fl - ffi – ffl (Stoffflasche)"

Example 2: in the course is used "f – ff – fl - ffi – ffl (Stoffflasche)" <- no "fi" used (same decoding)

=> decode of "fl", "ffi", ffl" has different results!

=> don't use fonts with legatures, if you want to grab the vector text !

=> you can use e.g. font "Articulate" (no ligature at all) for the vector text

larry van wave

Math, I was wondering if I can ask to borrow your coding genius mind to help me figure out the screen size refresh code for this slide. It functions like I want on a desktop monitor, but when reduced down the scrolling panel percentages don't work correctly. Here is the example -

https://360.articulate.com/review/content/ce7573c7-fc10-42c8-961e-c0fd17576556/review

 

 

Math Notermans

My first thought was that it was a Review issue, but testing and publishing purely as Web has the same results. Checking things out now.

Tweenlite you can exchange for gsap as thats included in Storyline now.

As you use a 'FromTo' tween for the scrollArea... easiest is using some static elements and then getProperty to get the exact values to move From and To... making that work in your sample.

Math Notermans

Fixed.

Added a ResizeHandler() that acts on every resize and shows width and height. Thus you can if needed calculate where what needs to be. 

But using a temporary shape to reposition it to on the x is easiest.
Added a fromShape... and in the ResizeHandler a gsap.set is used.
gsap.set(lessArw, { x:gsap.getProperty(fromShape, "x") });
Getting the x from the element.

First attempt though failed... In Storyline shapes, images and groups all have different orientation points or origins. And that makes it going wrong.
The fromShape probably calculates from its center, where a group uses the 0,0 point..thus getting unexplainable positions. Setting both orientpoints to 0,0 or top,left now...

Thats working, so its fixed.

Math Notermans

PS.. Gsap code formatting is a bit different then TweenLite/TweenMax was.
All code is backwards compatible, but better to adhere to newest approach.

TweenLite.to(txtArea, .65 ,{y:pos1, ease: "back.out(3)", delay: 0});
gsap.to(txtArea ,{duration:.65, y:pos1, ease: "back.out(3)", delay: 0});

So main difference is all parameters inside the { }. And the duration has a label ;-)