Paquete | flash.media |
Clase | public class SoundLoaderContext |
Herencia | SoundLoaderContext Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
load()
de la clase Sound.
Cuando utilice esta clase, puede ser conveniente usar el siguiente modelo de seguridad:
- No se admite la carga ni la reproducción de un sonido si el archivo que realiza la llamada se encuentra en el entorno limitado de red y el archivo de sonido que debe cargarse está en un sistema local.
- De forma predeterminada, no está permitido cargar y reproducir un sonido si el archivo que realiza la llamada es local e intenta cargar y reproducir sonido remoto. El usuario debe otorgar un permiso explícito para permitir esta acción.
- Están restringidas ciertas operaciones relacionadas con sonidos. Un archivo de un dominio distinto no puede acceder a los datos de un sonido cargado a no ser que implemente un archivo de política URL. Las API relacionadas con sonidos a las que afecta esta restricción son la propiedad
Sound.id3
y los métodosSoundMixer.computeSpectrum()
,SoundMixer.bufferTime
ySoundTransform()
.
Sin embargo, en Adobe AIR, el contenido del entorno limitado de seguridad de la aplicación
(contenido instalado con la aplicación de AIR) no está limitado por estas restricciones de seguridad.
Para obtener más información, consulte el tema del Centro de desarrollo de Flash Player Seguridad.
Propiedad | Definido por | ||
---|---|---|---|
bufferTime : Number = 1000
El número de milisegundos que se tarda en precargar un flujo de sonido en un búfer antes de que el sonido comience a reproducirse. | SoundLoaderContext | ||
checkPolicyFile : Boolean = false
Especifica si la aplicación debe intentar descargar un archivo de política URL desde el servidor del sonido cargado antes de comenzar la carga del mismo. | SoundLoaderContext | ||
constructor : Object
Una referencia a la clase de objeto o función constructora para una instancia de objeto determinada. | Object |
Método | Definido por | ||
---|---|---|---|
Crea un nuevo objeto contextual de carga de sonido. | SoundLoaderContext | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Devuelve el valor simple del objeto especificado. | Object |
bufferTime | propiedad |
public var bufferTime:Number = 1000
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
El número de milisegundos que se tarda en precargar un flujo de sonido en un búfer antes de que el sonido comience a reproducirse.
Tenga en cuenta que no es posible anular el valor de SoundLoaderContext.bufferTime
estableciendo la propiedad global SoundMixer.bufferTime
. La propiedad SoundMixer.bufferTime
afecta al tiempo de búfer en los flujos de sonido incorporados de un archivo SWF y no tiene nada que ver con los objetos Sound creados dinámicamente (es decir, objetos Sound creados con ActionScript).
checkPolicyFile | propiedad |
public var checkPolicyFile:Boolean = false
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Especifica si la aplicación debe intentar descargar un archivo de política URL desde el servidor del sonido cargado antes de comenzar la carga del mismo. Esta propiedad se aplica a sonidos cargados desde fuera del dominio del archivo que llama con el método Sound.load()
.
Establezca esta propiedad como true
cuando cargue sonido desde fuera del propio dominio del archivo que realiza la llamada y si el código del archivo necesita acceso de bajo nivel a los datos de sonido. Algunos ejemplos de acceso de bajo nivel a los datos de un sonido son la propiedad Sound.id3
para obtener un objeto ID3Info o llamar al método SoundMixer.computeSpectrum()
para obtener muestras del sonido cargado. Si intenta acceder a los datos de sonido sin establecer la propiedad checkPolicyFile
como true
en el momento de la carga, es posible que obtenga una excepción SecurityError, ya que no ha descargado el archivo de política necesario.
Si no necesita privilegios de acceso de bajo nivel para los datos de sonido que está cargando, no establezca checkPolicyFile
en true
. La búsqueda de un archivo de política consume ancho de banda de la red y podría demorar el inicio de la descarga, por lo que sólo debe hacerse si es necesario.
Al llamar a Sound.load()
con SoundLoaderContext.checkPolicyFile
establecido en true
, Flash Player o AIR debe descargar correctamente un archivo de política URL adecuado o determinar que no existe ninguno antes de comenzar la descarga del sonido especificado. Flash Player o AIR lleva a cabo las acciones siguientes (en el orden indicado) para comprobar la existencia de un archivo de política:
- Flash Player o AIR tiene en cuenta los archivos de política ya descargados.
- Flash Player o AIR intenta descargar cualquier archivo de política pendiente especificado en las llamadas a
Security.loadPolicyFile()
. - Flash Player o AIR intenta descargar un archivo de política de la ubicación predeterminada que corresponde a la dirección URL del sonido, que es
/crossdomain.xml
en el mismo servidor queURLRequest.url
. (La URL del sonido se especifica en la propiedadurl
del objeto URLRequest transmitido aSound.load()
o a la función del constructor Sound().
En todos los casos, Flash Player o AIR necesita que exista un archivo de política adecuado en el servidor de sonido. Éste debe proporcionar acceso al archivo de sonido en URLRequest.url
de acuerdo con la ubicación del archivo de política. También debe permitir que el dominio acceda al archivo que realiza la llamada gracias a una o varias etiquetas <allow-access-from>
.
Si establece checkPolicyFile
en true
, Flash Player o AIR espera a que se verifique el archivo de política antes de cargar el sonido. Para poder realizar operaciones de bajo nivel en los datos de sonido, como llamar a Sound.id3
o a SoundMixer.computeSpectrum()
, debe esperar a que los eventos progress
y complete
se distribuyan desde el objeto Sound.
Si define checkPolicyFile
como true
, pero no se encuentra ningún archivo de política adecuado, no recibirá ningún error hasta que no se realice alguna operación que requiera un archivo de política; cuando esto ocurra, Flash Player o AIR emitirá una excepción SecurityError
. Tras recibir un evento complete
, se puede comprobar si el archivo de política correspondiente se encontró mediante la obtención del valor de Sound.id3
en un bloque try
y comprobando si se emitía una excepción SecurityError
.
Tenga cuidado con checkPolicyFile
si descarga un sonido desde una URL que utilice redirección HTTP en el servidor. Flash Player o AIR intenta recuperar archivos de política que correspondan a la propiedad url
del objeto URLRequest transmitida a Sound.load()
. Si el archivo de sonido final proviene de una URL distinta por la redirección HTTP, es posible que los archivos de política descargados inicialmente no se puedan aplicar a la URL final del archivo de sonido, que es la URL determinante en las decisiones de seguridad.
Si se encuentra en esta situación, le presentamos una posible solución. Tras recibir un evento progress
o complete
, puede examinar el valor de la propiedad Sound.url
, que contiene la URL final del sonido. A continuación, llame al método Security.loadPolicyFile()
con una URL de archivo de política calculada según la URL final del sonido. Finalmente, sondee el valor de Sound.id3
hasta que deje de emitir excepciones.
Esto no se aplica al contenido del entorno limitado de la aplicación de AIR. El contenido del entorno limitado de la aplicación siempre tiene acceso al contenido de sonido, independientemente de su origen.
Para obtener más información, consulte el tema del Centro de desarrollo de Flash Player Seguridad.
Elementos de API relacionados
SoundLoaderContext | () | Información sobre |
public function SoundLoaderContext(bufferTime:Number = 1000, checkPolicyFile:Boolean = false)
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | AIR 1.0, Flash Player 9, Flash Lite 4 |
Crea un nuevo objeto contextual de carga de sonido.
ParámetrosbufferTime:Number (default = 1000 ) — El número de segundos que se tarda en precargar un flujo de sonido en un búfer antes de que el sonido comience a reproducirse.
| |
checkPolicyFile:Boolean (default = false ) — Especifica si se debe comprobar la existencia de un archivo de política URL entre los dominios al cargar el objeto (true ) o no.
|
Ejemplo ( Cómo utilizar este ejemplo )
El primer parámetro de un objeto SoundLoaderContext (context
) se utiliza para aumentar el valor de búfer predeterminado de un segundo a tres. (El valor es en milisegundos.) Si el segundo parámetro del objeto SoundLoaderContext se establece en true
, Flash Player consultará un archivo de política entre distintos dominios al cargar el objeto. En este caso se establece en un valor predeterminado false
, por lo que no se comprobará ningún archivo de política. El método load()
del objeto de sonido utilizará el parámetro de contexto para asegurarse de que se tardarán tres segundos en la carga previa del sonido en el búfer antes de que el sonido comience a transmitirse. El objeto URLRequest
determina la ubicación del archivo, que es un podcast de Adobe. Si se produce un error IOErrorEvent.IO_ERROR
durante la carga de un archivo de sonido, se invoca el método errorHandler()
.
package { import flash.display.Sprite; import flash.net.URLRequest; import flash.media.Sound; import flash.media.SoundLoaderContext; import flash.events.IOErrorEvent; public class SoundLoaderContextExample extends Sprite { public function SoundLoaderContextExample() { var snd:Sound = new Sound(); var req:URLRequest = new URLRequest("http://av.adobe.com/podcast/csbu_dev_podcast_epi_2.mp3"); var context:SoundLoaderContext = new SoundLoaderContext(3000, false); snd.load(req, context); snd.play(); snd.addEventListener(IOErrorEvent.IO_ERROR, errorHandler); } private function errorHandler(errorEvent:IOErrorEvent):void { trace("The sound could not be loaded: " + errorEvent.text); } } }
Tue Jun 12 2018, 02:12 PM Z