Forum Discussion
Storyline preload handling
I have a series of mp4 videos at the beginning of every slide as an intro (plays automatically ), each of which is around 1 MB big and 5 seconds long. My questions are:
1, if this video hasn't been fully loaded, will the timeline of storyline continue regardless?
2, while the user is viewing the 1 first slide, will all the videos in the following slide preload?
3, is video streaming supported in Storyline?
4, if possible, please explain in more detail how the preloading is handled in storyline.
Thanks a million.
42 Replies
- onEnterFrameCommunity Member
SL seems to start preloading by loading the current slide's assets along with the ones before and after. Then it starts loading everything from the first slide to the last.
My guess is your load indicator doesn't display because SL doesn't display the swf until its 100% loaded.
Our preloader loads all assets from first to last slide. It tracks the loading and updates the progress bar (and an SL var) so the student can see what is happening. In addition since we are updating that SL var you can build some logic in to disable the Next button until X% is loaded.
If you want to display progress for an individual SWF I would recommend you build two SWFs. One will be the "real" content the other is a "loader". The "loader" should be same display size as the content. It will perform a simple loadMovieClip to pull in the "real" content while showing progress. Put the "Loader" file on the SL slide. After publishing SL copy the real content into the proper folder to match the path you put in the loader swf.
Keep in mind that mileage will vary. Caching files is very much dependent on the browser, OS, and user settings.
- MarkMarinoCommunity Member
Jason Johnson said:
Idk about SL's behind the curtains voodoo but have u tried putting your preloader on frame 1 with asset loading mechanism and reserve the presentation until slide 2?
Yes, that's exactly how I originally coded it, but when that didn't work, I also tried encapsulating everything in a movieclip on frame 1. Neither method worked. - MarkMarinoCommunity Member
onEnterFrame (James Kingsley) said:
SL seems to start preloading by loading the current slide's assets along with the ones before and after. Then it starts loading everything from the first slide to the last.
My guess is your load indicator doesn't display because SL doesn't display the swf until its 100% loaded.
Our preloader loads all assets from first to last slide. It tracks the loading and updates the progress bar (and an SL var) so the student can see what is happening. In addition since we are updating that SL var you can build some logic in to disable the Next button until X% is loaded.
If you want to display progress for an individual SWF I would recommend you build two SWFs. One will be the "real" content the other is a "loader". The "loader" should be same display size as the content. It will perform a simple loadMovieClip to pull in the "real" content while showing progress. Put the "Loader" file on the SL slide. After publishing SL copy the real content into the proper folder to match the path you put in the loader swf.
Keep in mind that mileage will vary. Caching files is very much dependent on the browser, OS, and user settings.
A wheel within a wheel... yeah, putting a Flash preloader wrapper .swf around the content .swf should work just dandy except that in the content .swf, I am making an ExternalInterface call from the .swf back to Storyline to let Storyline know when the learner has completed the interaction in the .swf... my guess is it would probably still work, but I ran out of time to experiment. Also, obviously by going this route, we would lose out on Storyline's ability to preload the content in the background, essentially forcing the content to load only when the end-user hits that screen.
I ended up re-rigging things so that a "Loading, please wait..." text box is shown in Storyline rather than in my .swf and when the .swf is completely loaded, it executes the following code:
ExternalInterface.call('GetPlayer().SetVar','stateFromFlash',"flash_loaded");
Then, within Storyline, I have a trigger watching for changes to variable 'stateFromFlash' and when it gets set to "flash_loaded", I hide the loading text box.
Not the most elegant solution, but it seems to be working fine.
Maybe when (or if, at this point) the Storyline SDK gets released we will have some better methods for Flash<>Storyline communication???
- JasonJohnson2Community Member
Interesting approach...reminds me of my Flash programming days. Don't know if I'll ever get back to that with the HTML5 push but I feel like I'm trying similar "rigging" approaches to get jQuery web objects to work in SL...frustrating but achievable.
- PierreJouanCommunity Member
Mark Marino said:
I ended up re-rigging things so that a "Loading, please wait..." text box is shown in Storyline rather than in my .swf and when the .swf is completely loaded, it executes the following code:
ExternalInterface.call('GetPlayer().SetVar','stateFromFlash',"flash_loaded");
Then, within Storyline, I have a trigger watching for changes to variable 'stateFromFlash' and when it gets set to "flash_loaded", I hide the loading text box.
Not the most elegant solution, but it seems to be working fine.
Many, many thanks, it works just great !
I was desperate to find a solution because the preloader I added to my swf just wouldn't work when imported in Storyline.
This is so simple and yet efficient !
- SushilSuryawansCommunity Member
Hi Pierre Jouan and Mark Marino!
I felt really good reading your discussion on solving the preloading problem. In fact, I am facing the similar problem with my SL output deployment.
Actually we and our clients are habitual to use Adobe Captivate output that shows a download progress bar before starting the eLearning module. Once the module is 100% downloaded, it starts and runs smoothly after that.
With Storyline what is happening is, the module starts off quickly but that's not fully downloaded. So at some point of time, where the assets are not yet downlaoded, the viewer gets stuck! ..and doen't understand why the module stopped in between, and you might know what happens next!
Thanks to your discussion, I could sense that SOMETHING can be done for this!
Can you please explain how exactly to do what Mark suggested and Pierre liked:
"Re-rigging things so that a "Loading, please wait..." text box is shown in Storyline rather than in my .swf and when the .swf is completely loaded, it executes the following code:
ExternalInterface.call('GetPlayer().SetVar','stateFromFlash',"flash_loaded");
Then, within Storyline, I have a trigger watching for changes to variable 'stateFromFlash' and when it gets set to "flash_loaded", I hide the loading text box."
You might have understood that I am a new animal on this planet who needs all the details about what all things need to be clicked to do this! :P
It will be a great help! Thanks in advance!
- SimonClearyCommunity Member
Hi. I have the opposite problem. How can I prevent SL from preloading? Does preloading only work with native SL assets or does it preload Flash content as well?
The reason is that my company has a steep bandwidth restriction... 80KB per transaction / click. I'm really trying to move away from our old e-learning development methods and SL looks awesome and easy, so it would be nice if I could disable preloading somehow?
Also, does Studio preload content as well, or is it just SL?
- DavidJanusCommunity Member
I would also be very interested in being able to change the way in which Storyline preloads - for instance being able to load just 1 page at a time.
Hi Simon and David,
Here is how content is preloaded in Storyline - and to change that behavior would need to be a feature request. Also, content in Presenter is also preloaded as described here.
- SimonClearyCommunity Member
Thanks Ashley. I have loaded this as a feature request. Do you know when new updates would be released? And how they grade and accept features perhaps?
Hi Simon,
We don't announce release dates for new versions or updates, so to stay up to date on that you may want to enable the "check for updates at start up" within your Articulate programs and I'd also suggest subscribing to the Word of Mouth Blog, following Articulate on Facebook and Twitter.
The feature request process is described a bit further here - and although this blog post is a bit older, the same set up still applies.
Related Content
- 8 months ago
- 7 months ago
- 8 months ago
- 4 months ago