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

13.6. Setting In and Out Points

Problem

You want to play a sound with start and stop (in and out) points other than the beginning or end of the sound.

Solution

Create and invoke a custom play( ) method.

Discussion

The start( ) method plays and optionally loops a sound with a configurable starting offset. You can define a custom method that also allows you to stop the sound after an elapsed period of time. We can achieve this by using an empty movie clip to poll the sound’s elapsed time and telling Flash to stop the sound when the maximum time is exceeded.

Our custom play( ) method works with Sound objects created using the custom createNewSound( ) method from Recipe 13.1. If you don’t want to use the createNewSound( ) method, you must create an empty movie clip and store a reference to that movie clip in a property named mc within the Sound object (createNewSound( ) does this automatically).

Here is our custom play( ) method, which accepts up to three parameters: the starting offset (in seconds), the number of loops, and the maximum playing time (in milliseconds). We’ll also define another method that allows us to add a callback function that is invoked when the sound stops. Make sure you add these methods to your Sound.as file for easy inclusion in other projects.

Sound.prototype.play = function (startOffset, loops, maxTime) {

  // Call the start(  ) method with the values for offset and loops.
  this.start(startOffset, loops);

  // If maxTime is undefined, then don't do anything else. if ...

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