In Flash Player 10 and later and AIR 1.5 and later, you can also use
this class to work with sound that is generated dynamically. In this case,
the Sound object uses the function you assign to a sampleData
event handler to poll for sound data. The sound is played as it is
retrieved from a ByteArray object that you populate with sound data. You
can use Sound.extract() to extract sound data from a Sound
object, after which you can manipulate it before writing it back to the
stream for playback.
To control sounds that are embedded in a SWF file, use the properties in the SoundMixer class.
Note: The ActionScript 3.0 Sound API differs from ActionScript 2.0. In ActionScript 3.0, you cannot take sound objects and arrange them in a hierarchy to control their properties.
When you use this class, consider the following security model:
Sound.id3,
SoundMixer.computeSpectrum(),
SoundMixer.bufferTime, and the SoundTransform
class.However, in Adobe AIR, content in the application security
sandbox(content installed with the AIR application) are not restricted by
these security limitations.
For more information related to security, see the Flash Player Developer Center Topic: Security.
stream The URL that points to an external MP3 file.context An optional SoundLoader context object, which can define the buffer time(the minimum number of milliseconds of MP3 data to hold in the Sound object's buffer) and can specify whether the application should check for a cross-domain policy file prior to loading the sound.This method is designed to be used when you are working with
dynamically generated audio, using a function you assign to the
sampleData event for a different Sound object. That is, you
can use this method to extract sound data from a Sound object. Then you
can write the data to the byte array that another Sound object is using to
stream dynamic audio.
The audio data is placed in the target byte array starting from the
current position of the byte array. The audio data is always exposed as
44100 Hz Stereo. The sample type is a 32-bit floating-point value, which
can be converted to a Number using ByteArray.readFloat().
MP3 sound files can contain ID3 tags, which provide metadata about the
file. If an MP3 sound that you load using the Sound.load()
method contains ID3 tags, you can query these properties. Only ID3 tags
that use the UTF-8 character set are supported.
Flash Player 9 and later and AIR support ID3 2.0 tags, specifically 2.3
and 2.4. The following tables list the standard ID3 2.0 tags and the type
of content the tags represent. The Sound.id3 property
provides access to these tags through the format
my_sound.id3.COMM, my_sound.id3.TIME, and so on.
The first table describes tags that can be accessed either through the ID3
2.0 property name or the ActionScript property name. The second table
describes ID3 tags that are supported but do not have predefined
properties in ActionScript.
When using this property, consider the Flash Player security model:
id3 property of a Sound object is always permitted
for SWF files that are in the same security sandbox as the sound file. For
files in other sandboxes, there are security checks.load() method of the
Sound class, you can specify a context parameter, which is a
SoundLoaderContext object. If you set the checkPolicyFile
property of the SoundLoaderContext object to true, Flash
Player checks for a URL policy file on the server from which the sound is
loaded. If a policy file exists and permits access from the domain of the
loading SWF file, then the file is allowed to access the id3
property of the Sound object; otherwise it is not.However, in Adobe AIR, content in the application security
sandbox(content installed with the AIR application) are not restricted by
these security limitations.
For more information related to security, see the Flash Player Developer Center Topic: Security.
true, any playback is currently suspended while the object
waits for more data.Sound.url property has been truncated. When
the isURLInaccessible value is true the
Sound.url value is only the domain of the final URL from
which the sound loaded. For example, the property is truncated if the
sound is loaded from http://www.adobe.com/assets/hello.mp3,
and the Sound.url property has the value
http://www.adobe.com. The isURLInaccessible
value is true only when all of the following are also true:
Sound.load() is from a different
domain than the sound file's final URL.Sound.load() does not have
permission to access the sound file. Permission is granted to access the
sound file the same way permission is granted for the
Sound.id3 property: establish a policy file and use the
SoundLoaderContext.checkPolicyFile property.Note: The isURLInaccessible property was added for
Flash Player 10.1 and AIR 2.0. However, this property is made available to
SWF files of all versions when the Flash runtime supports it. So, using
some authoring tools in "strict mode" causes a compilation error. To work
around the error use the indirect syntax
mySound, or disable strict mode. If you
are using Flash Professional CS5 or Flex SDK 4.1, you can use and compile
this API for runtimes released before Flash Player 10.1 and AIR 2."isURLInaccessible"
For application content in AIR, the value of this property is always
false.
Sound.load()
method. For Sound objects that are associated with a sound asset from a
SWF file's library, the value of the url property is
null.
When you first call Sound.load(), the url
property initially has a value of null, because the final URL
is not yet known. The url property will have a non-null value
as soon as an open event is dispatched from the Sound
object.
The url property contains the final, absolute URL from
which a sound was loaded. The value of url is usually the
same as the value passed to the stream parameter of
Sound.load(). However, if you passed a relative URL to
Sound.load() the value of the url property
represents the absolute URL. Additionally, if the original URL request is
redirected by an HTTP server, the value of the url property
reflects the final URL from which the sound file was actually downloaded.
This reporting of an absolute, final URL is equivalent to the behavior of
LoaderInfo.url.
In some cases, the value of the url property is truncated;
see the isURLInaccessible property for details.
type The type of event.useCapture Determines whether the listener works in the capture phase or the target and bubbling phases. If useCapture is set to true, the listener processes the event only during the capture phase and not in the target or bubbling phase. If useCapture is false, the listener processes the event only during the target or bubbling phase. To listen for the event in all three phases, call addEventListener twice, once with useCapture set to true, then again with useCapture set to false.priority The priority level of the event listener. The priority is designated by a signed 32-bit integer. The higher the number, the higher the priority. All listeners with priority n are processed before listeners of priority n-1. If two or more listeners share the same priority, they are processed in the order in which they were added. The default priority is 0.useWeakReference Determines whether the reference to the listener is strong or weak. A strong reference(the default) prevents your listener from being garbage-collected. A weak reference does not. Class-level member functions are not subject to garbage collection, so you can set useWeakReference to true for class-level member functions without subjecting them to garbage collection. If you set useWeakReference to true for a listener that is a nested inner function, the function will be garbage-collected and no longer persistent. If you create references to the inner function(save it in another variable) then it is not garbage-collected and stays persistent.
ArgumentError The listener specified is not a function.After you successfully register an event listener, you cannot change
its priority through additional calls to addEventListener().
To change a listener's priority, you must first call
removeListener(). Then you can register the listener again
with the new priority level.
Keep in mind that after the listener is registered, subsequent calls to
addEventListener() with a different type or
useCapture value result in the creation of a separate
listener registration. For example, if you first register a listener with
useCapture set to true, it listens only during
the capture phase. If you call addEventListener() again using
the same listener object, but with useCapture set to
false, you have two separate listeners: one that listens
during the capture phase and another that listens during the target and
bubbling phases.
You cannot register an event listener for only the target phase or the bubbling phase. Those phases are coupled during registration because bubbling applies only to the ancestors of the target node.
If you no longer need an event listener, remove it by calling
removeEventListener(), or memory problems could result. Event
listeners are not automatically removed from memory because the garbage
collector does not remove the listener as long as the dispatching object
exists(unless the useWeakReference parameter is set to
true).
Copying an EventDispatcher instance does not copy the event listeners attached to it.(If your newly created node needs an event listener, you must attach the listener after creating the node.) However, if you move an EventDispatcher instance, the event listeners attached to it move along with it.
If the event listener is being registered on a node while an event is being processed on this node, the event listener is not triggered during the current phase but can be triggered during a later phase in the event flow, such as the bubbling phase.
If an event listener is removed from a node while an event is being processed on the node, it is still triggered by the current actions. After it is removed, the event listener is never invoked again(unless registered again for future processing).
event The Event object that is dispatched into the event flow. If the event is being redispatched, a clone of the event is created automatically. After an event is dispatched, its target property cannot be changed, so you must create a new copy of the event for redispatching to work.true if the event was successfully dispatched. A value of false indicates failure or that preventDefault() was called on the event.Error The event dispatch recursion limit has been reached.dispatchEvent() method
is called.
type The type of event.true if a listener of the specified type is registered; false otherwise.willTrigger().
The difference between hasEventListener() and
willTrigger() is that hasEventListener()
examines only the object to which it belongs, whereas
willTrigger() examines the entire event flow for the event
specified by the type parameter.
When hasEventListener() is called from a LoaderInfo
object, only the listeners that the caller can access are considered.
stream A URL that points to an external MP3 file.context An optional SoundLoader context object, which can define the buffer time(the minimum number of milliseconds of MP3 data to hold in the Sound object's buffer) and can specify whether the application should check for a cross-domain policy file prior to loading the sound.IOError A network error caused the load to fail.IOError The digest property of the stream object is not null. You should only set the digest property of a URLRequest object when calling the URLLoader.load() method when loading a SWZ file(an Adobe platform component).SecurityError Local untrusted files may not communicate with the Internet. You can work around this by reclassifying this file as local-with-networking or trusted.SecurityError You cannot connect to commonly reserved ports. For a complete list of blocked ports, see "Restricting Networking APIs" in the ActionScript 3.0 Developer's Guide.Sound.load() for you. You only need to call
Sound.load() yourself if you don't pass a valid URLRequest
object to the Sound constructor or you pass a null value.
Once load() is called on a Sound object, you can't later
load a different sound file into that Sound object. To load a different
sound file, create a new Sound object.
When using this method, consider the following security model:
Sound.load() is not allowed if the calling file
is in the local-with-file-system sandbox and the sound is in a network
sandbox.allowNetworking parameter of the object and
embed tags in the HTML page that contains the SWF
content.In Flash Player 10 and later, if you use a multipart Content-Type(for example "multipart/form-data") that contains an upload(indicated by a "filename" parameter in a "content-disposition" header within the POST body), the POST operation is subject to the security rules applied to uploads:
Also, for any multipart Content-Type, the syntax must be valid (according to the RFC2046 standards). If the syntax appears to be invalid, the POST operation is subject to the security rules applied to uploads.
In Adobe AIR, content in the application security sandbox
(content installed with the AIR application) are not restricted by these
security limitations.
For more information related to security, see the Flash Player Developer Center Topic: Security.
startTime The initial position in milliseconds at which playback should start.loops Defines the number of times a sound loops back to the startTime value before the sound channel stops playback.sndTransform The initial SoundTransform object assigned to the sound channel.null if you have no sound card or if you run out of available sound channels. The maximum number of sound channels available at once is 32.type The type of event.useCapture Specifies whether the listener was registered for the capture phase or the target and bubbling phases. If the listener was registered for both the capture phase and the target and bubbling phases, two calls to removeEventListener() are required to remove both, one call with useCapture() set to true, and another call with useCapture() set to false.type The type of event.true if a listener of the specified type will be triggered; false otherwise.true if an event listener is triggered during any
phase of the event flow when an event of the specified type is dispatched
to this EventDispatcher object or any of its descendants.
The difference between the hasEventListener() and the
willTrigger() methods is that hasEventListener()
examines only the object to which it belongs, whereas the
willTrigger() method examines the entire event flow for the
event specified by the type parameter.
When willTrigger() is called from a LoaderInfo object,
only the listeners that the caller can access are considered.
load()function for the Sound object. If you do not pass a valid URLRequest object to the Sound constructor, you must call theload()function for the Sound object yourself, or the stream will not load.Once
In Flash Player 10 and later and AIR 1.5 and later, instead of usingload()is called on a Sound object, you can't later load a different sound file into that Sound object. To load a different sound file, create a new Sound object.load(), you can use thesampleDataevent handler to load sound dynamically into the Sound object.