Acceso a medios cargados como datos

Para acceder a los datos cargados, se utilizan métodos como BitmapData.draw() y SoundMixer.computeSpectrum(). De forma predeterminada, un archivo SWF de un entorno limitado de seguridad no puede obtener datos de píxeles ni datos de audio de objetos gráficos o de audio representados o reproducidos por medios cargados en otro entorno limitado. Sin embargo, se pueden utilizar los siguientes métodos para conceder este permiso:

En las siguientes secciones se proporcionan detalles sobre el acceso a datos de mapa de bits, sonido y vídeo.

Subtemas

Acceso a datos de mapa de bits
Acceso a datos de sonido
Acceso a datos de vídeo

Acceso a datos de mapa de bits

El método draw() de un objeto BitmapData permite dibujar en el objeto BitmapData los píxeles de cualquier objeto de visualización que se están mostrando. Podrían ser los píxeles de un objeto MovieClip, un objeto Bitmap o cualquier objeto de visualización. Para que el método draw() dibuje píxeles en el objeto BitmapData, deben cumplirse las siguientes condiciones:

Si no se cumplen estas condiciones, se emite una excepción SecurityError.

Cuando se carga una imagen mediante el método load() de la clase Loader, se puede especificar un parámetro context, que es un objeto LoaderContext. Si se establece la propiedad checkPolicyFile del objeto LoaderContext en true, Flash Player comprueba si hay un archivo de política entre dominios en el servidor desde el cual se carga la imagen. Si hay un archivo de política entre dominios y éste admite el dominio del archivo SWF que realiza la carga, el archivo podrá acceder a los datos del objeto Bitmap; en caso contrario, se denegará el acceso.

También se puede especificar una propiedad checkPolicyFile en una imagen cargada a través de una etiqueta <img> en un campo de texto. Para ver más detalles, consulte Carga de archivos SWF e imágenes mediante la etiqueta <img> de un campo de texto.

Acceso a datos de sonido

Las siguientes API de ActionScript 3.0 relacionadas con el sonido tienen restricciones de seguridad:

Cada sonido tiene dos tipos de entornos limitados asociados, que son un entorno limitado de contenido y un entorno limitado de propietario:

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 se establece la propiedad checkPolicyFile del objeto SoundLoaderContext en true, Flash Player comprueba si hay un archivo de política entre dominios en el servidor desde el cual se carga el sonido. Si hay un archivo de política entre dominios y éste admite el dominio del archivo SWF que realiza la carga, el archivo podrá acceder a la propiedad id del objeto Sound; en caso contrario, se denegará el acceso. 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 de vídeo Flash) un archivo de política entre dominios en el servidor de origen concede acceso a los datos de los medios cargados. No se puede utilizar el método computeSpectrum() si un sonido se carga desde flujos RTMP.

Para más información, consulte Controles de autor (desarrollador) y Controles de sitio Web (archivos de política entre dominios).

Acceso a datos de vídeo

Se puede utilizar el método BitmapData.draw() para capturar los datos de píxeles del fotograma actual de un vídeo.

Hay dos tipos distintos de vídeo:

No se puede utilizar el método BitmapData.draw() para acceder al vídeo RTMP.

Cuando se llama al método BitmapData.draw() con vídeo progresivo como valor del parámetro source, el que realiza la llamada a BitmapData.draw() debe encontrarse en el mismo entorno limitado que el archivo FLV, o el servidor del archivo FLV debe tener un archivo de política que conceda permiso al dominio del archivo SWF que realiza la llamada. Para solicitar la descarga del archivo de política, debe establecerse la propiedad checkPolicyFile del objeto NetStream en true.


Flash CS3

 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/main/00000355.html