15.8. Getting the Percentage of an Asset That Has Loaded

Problem

You want to determine what percentage of an asset has loaded.

Solution

Use the getBytesLoaded( ) and getBytesTotal( ) methods. Alternatively, you can create a custom percentLoaded property for the Sound and MovieClip classes.

Discussion

You can use the getBytesLoaded( ) and getBytesTotal( ) methods to determine the percentage of an asset that has loaded. The percentage is calculated by determining the ratio of the bytes loaded to the total bytes:

ratio = myObj.getBytesLoaded() / myObj.getBytesTotal(  );

The ratio is always between 0 and 1. Therefore, to format the percentage for display, you can multiply the ratio by 100. If you want the percentage to be a whole number, you can round the result as well:

percentLoaded = Math.round(ratio * 100);

The only caveat is that before any information about the asset has been retrieved (such as its file size), the getBytesLoaded( ) and getBytesTotal( ) methods both return 0, and 0 divided by 0 does not yield a valid number. Therefore, you should also use the isNaN( ) (is Not-a-Number) function to catch if the percentage is not a valid number and set it to 0 instead:

if (isNaN(percentLoaded)) {
  percentLoaded = 0;
}

You can encapsulate this process by defining a custom percentLoaded property for the Sound and MovieClip classes. The following code should be added to the Sound.as file created in Chapter 13:

// The getPercentLoaded(  ) method returns the percent that has loaded as a whole // ...

Get Actionscript Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.