O'Reilly logo

Actionscript Cookbook by Joey Lott

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

15.7. Determining if an Asset Is Loaded

Problem

You want to know if an asset has completed loading into the Player.

Solution

Use the getBytesLoaded( ) and getBytesTotal( ) methods. Alternatively, define a custom isLoaded property for the Sound and MovieClip classes.

Discussion

There are three kinds of assets that can be loaded into a Flash movie using ActionScript: .swf files, JPEGs, and MP3s. The first two types are loaded into movie clips, and MP3s are loaded into Sound objects. Both the MovieClip and Sound classes have methods named getBytesLoaded( ) and getBytesTotal( ), which you can use to determine whether the asset is loaded. So, no matter which type of asset you are loading, the ActionScript is essentially the same.

The getBytesLoaded( ) method returns the number of bytes that are currently loaded into a movie clip or Sound object, and the getBytesTotal( ) method returns the number of bytes that will be loaded when the asset has been completely received. You know that the asset is completely loaded into the Player once the values returned by the two methods are equal.

Tip

The getBytesLoaded( ) and getBytesTotal( ) methods use uncompressed file sizes and thus are not necessarily accurate measurements of the compressed asset sizes. However, their ratio yields a reasonable estimate of what percentage of the asset has loaded.

There is a caveat when comparing the values returned by getBytesLoaded( ) and getBytesTotal( ). Before an object retrieves the information about the file it ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required