This article is purely about being smarter and more creative at handling rich media content in a Flash project. I am talking about avoiding the dreaded preloader with a 300kb + chunk of a large flash project.

Over the course of my role as Senior Flash Developer at SWiSHzone I have had to come up with solutions that work across a massive customer base. Everyone including many whose internet connection isn’t ADSL2. The content I create is dynamic flash sites, many with multiple pages and image rich content. On top of this the highly interactive interfaces and systems that need to take in order of event issues and limited dependencies.

The methods that I am going to examine to manage loading content are:

On Demand – this is the typical method most developers use. Basically you load the required content on interaction or all at the start of the project.

Background Sequential Loading - this is where you manage the loading of content in chucks, in an order that may be the intended path of narrative of the user. Often this is done in the background whilst the user is interacting with the first part of the content.

Asymmetrical Loading – this is my explanation of how a traditional html page loads. Because the elements are naturally broken into small chucks they load and display in their own manner. With skill a creative flash developer can be use this to add to the animated narrative of a flash project.

On Demand

Everything has a place in modern Flash development except for forcing a user to sit in front of a preloader as a 300kb swf loads in. On demand loading is highly practical if you are loading in a 30kb large image off a thumbnail but that’s where it ends. I can’t really add in many other reasons to use it apart from a combination with the next explained method. Why do I say this? Because there are methods that’ll make your project a holy grail user experience rather than a beautifully expensive experience that many people may not proceed through because the majority of their time is spent waiting.

Background Sequential Loading

Over the length of the narrative of a flash project there are many times where you can sneakily load content whilst the user is engaged with the current content. In a sense your are trying to anticipate the users next navigation choice and load that rich content before they get there. This may mean splitting up a site into small chunks and sequentially loading these so not to bomb their connection. You need to manage this in a way they may add to the interactive experience, an example maybe to only show the menu item of a section when that section has loaded.

I am not opposite to preloaders or providing visual feed back to users of content loading, if fact I tailor these into the experience. It is about giving life to a project so it slowly becomes whole. A case study of this is the Template site Spacial, the sections load one after another and the menu and the visual appearance of the pages are all controlled by the loading of that section. This gives a feeling of the pages being drawn in front of you. This site needed all of the sections to be displayed as part of the visual and interactive design. The sections cannot be access until they are loaded.

You can also use systems where the content is sequentially loading in the background and give an “On Demand” override that loads or continues to load that content, stopping any loading to free up the connection. You’ll need to check the current loading progress and work out whether it is worth stopping it or just load what he user wants as well. I don’t recommend killing a URLloader at all. You do need to be careful if you build too much complexity, just as much as trying to load too much!

You really need to beware of order of events issues with this style of loading, the point is not to expect anything in the content until it has loaded.

Asymmetrical Loading

I mentioned before that the best comparison is to existing web content is a typical html page, where the content is loaded in small chucks and is almost displayed in a ranking based on file size. We all experience this day to day and in someways users are completely use to this.

Flash has always been the fat beast of user experience and has fought hard to be incorporate into the web. Over the last 7 years I have tried to step away from developing the typical embed swf for Flash content and have developed many dynamic solutions for customers and clients. It is a switch of practice where in a sense you consider your project to have a cascading file structure. Animated preloaders are hidden within the experience of the user. Streamed media is embraced to provided rich content. Efficient scripting provides rich animations and reduces file size.

There are many systems to help share content. Browser have a wonderful thing called a cache, you can use this to your advantage. Break your site up into generic files that once they loaded are cached, even if the individual aspects can be changed like text and image content. The practical methods is to separate your layout away from the content, if you have multiple styled pages store those as empty page-styles in a generic place. Once the page-style template has loaded, the content is loaded. Incorporate your art/interactive design into the process. Use the process of loading as part of the visual experience!

Investigate Adobe’s Shared Libraries, it is an incorporated solution and isn’t too difficulty for a mid level developer to get their heads around. Its not needed if you have good systems in place.

In a way it is Object Oriented Structure, thinking of your project outside of the embeded chuck that Flash has pushed designers and developers to make. Kill the fat 300kb beast and 30second preloader!