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.11. Performing Actions When the Asset Is Loaded

Problem

You want to define actions to occur when an asset has loaded completely.

Solution

For sounds, use the onLoad( ) event handler method. For all other datatypes, set a callback function using the setChangeHandler( ) of the FProgressBar class or the custom LoadMonitor class (depending on which technique you are using).

Discussion

The Sound class provides a convenient way to perform actions when the sound has loaded. Simply define an onLoad( ) method for the Sound object and Flash automatically invokes that method once the sound has loaded:

mySound_sound.onLoad = function (  ) {
  // When the sound loads, tell it to start.
  this.start(  );
};

Other types of assets require another way of determining when the asset has loaded. When using the Progress Bar component, you can define a callback function that is called each time there is progress in the loading of the asset. The setChangeHandler( ) method accepts the name of a callback function as a string. It also accepts an optional, second parameter specifying a reference to the object in which the function can be found. If the second parameter is omitted, the timeline in which the Progress Bar component exists is assumed. The callback function is automatically passed a reference to the Progress Bar component.

// Define the callback function. function onProgress (cmpt) { trace("onProgress( ) called for the progress bar " + cmpt); } // Set the callback function for updates on the progress bar ...

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