Las siguientes API de ActionScript 3.0 relacionadas con el sonido tienen restricciones de seguridad:
-
El método
SoundMixer.computeSpectrum()
: siempre se permite en el código que se ejecuta en el mismo entorno limitado de seguridad que el archivo de sonido. Para el código de otros entornos limitados existen comprobaciones de seguridad.
-
El método
SoundMixer.stopAll()
: siempre se permite en el código que se ejecuta en el mismo entorno limitado de seguridad que el archivo de sonido. Para los archivos de otros entornos limitados existen comprobaciones de seguridad.
-
La propiedad
id3
de la clase Sound: siempre se permite en archivos SWF que se encuentran en el mismo entorno limitado de seguridad que el archivo de sonido. Para el código de otros entornos limitados existen comprobaciones de seguridad.
Cada sonido tiene dos tipos de entornos limitados asociados, que son un entorno limitado de contenido y un entorno limitado de propietario:
-
El dominio de origen del sonido determina el entorno limitado de contenido que, a su vez, determina si los datos pueden extraerse del sonido a través de la propiedad
id3
del sonido y a través del método
SoundMixer.computeSpectrum()
.
-
El objeto que inició el sonido que se reproduce determina el entorno limitado de propietario que, a su vez, determina si el sonido puede detenerse a través del método
SoundMixer.stopAll()
.
Cuando se carga el sonido mediante el método
load()
de la clase Sound, se puede especificar un parámetro
context
, que es un objeto SoundLoaderContext. Si establece la propiedad
checkPolicyFile
del objeto SoundLoaderContext como
true
, el motor de ejecución comprobará la existencia de un archivo de política URL en el servidor desde el que se carga el sonido. Si hay un archivo de política y este admite el dominio del código que realiza la carga, el código podrá acceder a la propiedad
id
del objeto Sound; en caso contrario, no será posible. Además, si se establece un valor de la propiedad
checkPolicyFile
, se puede activar el método
SoundMixer.computeSpectrum()
para sonidos cargados.
Se puede utilizar el método
SoundMixer.areSoundsInaccessible()
para saber si una llamada al método
SoundMixer.stopAll()
no va a detener todos los sonidos porque el que realiza la llamada no puede acceder al entorno limitado de uno o varios propietarios de sonidos.
Llamar al método
SoundMixer.stopAll()
permite detener estos sonidos cuyo entorno limitado de propietario es el mismo que el que realiza la llamada a
stopAll()
. También detiene los sonidos que han empezado a reproducirse porque unos archivos SWF realizaron una llamada al método
Security.allowDomain()
para permitir el acceso por parte del dominio del archivo SWF que realiza la llamada al método
stopAll()
. Los demás sonidos no se detienen y su presencia puede revelarse mediante una llamada al método
SoundMixer.areSoundsInaccessible()
.
Para llamar al método
computeSpectrum()
, es necesario que cada sonido que se esté reproduciendo se encuentre en el mismo entorno limitado que el objeto que realiza la llamada al método o que proceda de un origen que haya concedido permiso al entorno limitado del que realiza la llamada; en caso contrario, se emite una excepción SecurityError. En el caso de los sonidos cargados desde sonidos incorporados en una biblioteca de un archivo SWF, el permiso se concede a través de una llamada al método
Security.allowDomain()
en el archivo SWF cargado. En el caso de los sonidos que no proceden de archivos SWF (procedentes de archivos MP3 cargados o archivos de vídeo) un archivo de política URL en el servidor de origen concede acceso a los datos de los medios cargados.
Para obtener más información, consulte
Controles de autor (desarrollador)
y
Controles de sitio web (archivos de política)
.
Para acceder a datos de sonido desde flujos RTMP, debe permitir el acceso en el servidor. Utilice la propiedad
Client.audioSampleAccess
de ActionScript de servidor para permitir acceso a directorios específicos de Flash Media Server. Para obtener más información, consulte la
referencia del lenguaje ActionScript de Flash Media Server
.