Carga de contenidoFlash Player 9 y posterior, Adobe AIR 1.0 y posterior El contenido de Flash Player y AIR puede cargar distintos tipos de contenido, incluyendo los siguientes:
Carga de imágenes y archivos SWF con la clase LoaderLa clase Loader se utiliza para cargar archivos SWF e imágenes (archivos JPG, GIF o PNG). Cualquier archivo SWF que no se encuentre en el entorno limitado local con sistema de archivos puede cargar archivos SWF e imágenes desde cualquier dominio de red. Sólo los archivos SWF de entornos limitados locales pueden cargar archivos SWF e imágenes del sistema de archivos local. Sin embargo, los archivos del entorno limitado local con acceso a la red sólo pueden cargar archivos SWF que se encuentren en el entorno limitado local de confianza o en el entorno limitado local con acceso a la red. Los archivos SWF del entorno limitado local con acceso a la red cargan contenido local que no sean archivos SWF (por ejemplo, imágenes), pero no pueden acceder a los datos del contenido cargado. Al cargar un archivo SWF de un origen que no es de confianza (por ejemplo, un dominio distinto al del archivo SWF raíz del objeto Loader), es aconsejable definir una máscara para el objeto Loader para evitar que el contenido cargado (que es un elemento secundario del objeto Loader) se dibuje en partes del escenario situadas fuera de la máscara, como se muestra en el siguiente código: import flash.display.*; import flash.net.URLRequest; var rect:Shape = new Shape(); rect.graphics.beginFill(0xFFFFFF); rect.graphics.drawRect(0, 0, 100, 100); addChild(rect); var ldr:Loader = new Loader(); ldr.mask = rect; var url:String = "http://www.unknown.example.com/content.swf"; var urlReq:URLRequest = new URLRequest(url); ldr.load(urlReq); addChild(ldr); Cuando se llama al método load() del objeto Loader, se puede especificar un parámetro context, que es un objeto LoaderContext. La clase LoaderContext incluye tres propiedades que permiten definir el contexto de uso del contenido cargado:
Para obtener más detalles, consulte Especificación del contexto de carga. Una propiedad importante de un objeto Loader es contentLoaderInfo, que es un objeto LoaderInfo. A diferencia de lo que ocurre con la mayoría de los objetos, un objeto LoaderInfo se comparte entre el archivo SWF que realiza la carga y el contenido cargado, y siempre es accesible para ambas partes. Cuando el contenido cargado es un archivo SWF, éste puede acceder al objeto LoaderInfo a través de la propiedad DisplayObject.loaderInfo. Los objetos LoaderInfo contienen información como el progreso de carga, los URL del cargador y del contenido cargado, o la relación de confianza entre ambos. Para obtener más información, consulte Supervisión del progreso de carga. Carga de sonido y vídeosCualquier contenido, excepto el contenido que se encuentre en el entorno limitado local con sistema de archivos, puede cargar sonido y vídeo de orígenes de red, a través de los métodos Sound.load(), NetConnection.connect() y NetStream.play(). Sólo el contenido de los entornos limitados local con sistema de archivos y de la aplicación de AIR pueden cargar medios desde el sistema de archivos local. Sólo el contenido del entorno limitado local con sistema de archivos, del entorno local e la aplicación de AIR o del entorno limitado local de confianza puede acceder a los datos de estos archivos cargados. Hay otras restricciones relativas al acceso de datos desde medios cargados. Para obtener información más detallada, consulte Acceso a medios cargados como datos. Carga de archivos SWF e imágenes mediante la etiqueta <img> de un campo de textoPuede cargar archivos SWF y mapas de bits en un campo de texto mediante la etiqueta <img>, como se muestra en el código siguiente: <img src = 'filename.jpg' id = 'instanceName' > Para acceder al contenido cargado de este modo, puede utilizar el método getImageReference() de la instancia de TextField, como se muestra en el código siguiente: var loadedObject:DisplayObject = myTextField.getImageReference('instanceName');
Sin embargo, tenga en cuenta que los archivos SWF e imágenes que se cargan de este modo se incluyen en el entorno limitado correspondiente a su origen. Si se carga un archivo de imagen mediante una etiqueta <img> en un campo de texto, puede ser que haya un archivo de política URL que permita el acceso a datos de la imagen. Para comprobar si hay un archivo de política, añada un atributo checkPolicyFile a la etiqueta <img>, como se muestra en el código siguiente: <img src = 'filename.jpg' checkPolicyFile = 'true' id = 'instanceName' > Si carga un archivo SWF mediante una etiqueta <img> en un campo de texto, puede permitir el acceso a los datos de dicho archivo SWF a través de una llamada al método Security.allowDomain(). Si utiliza una etiqueta <img> en un campo de texto para cargar un archivo externo (en lugar de usar una clase Bitmap incorporada en el archivo SWF), se crea automáticamente un objeto Loader como elemento secundario del objeto TextField y el archivo externo se carga en dicho objeto Loader, tal y como sucedería si hubiera utilizado un objeto Loader en ActionScript para cargar el archivo. En este caso, el método getImageReference() devuelve el objeto Loader que se creó automáticamente. No es necesario realizar ninguna comprobación de seguridad para acceder a este objeto Loader porque se encuentra en el mismo entorno limitado de seguridad que el código que realiza la llamada. Sin embargo, si se hace referencia a la propiedad content del objeto Loader para acceder al medio cargado, sí es preciso aplicar las reglas de seguridad. Si el contenido es una imagen, deberá implementar un archivo de política URL y, si es un archivo SWF, deberá hacer que el código del archivo SWF llame al método allowDomain(). Adobe AIREn el entorno limitado de la aplicación, las etiquetas <img> de un campo de texto se omiten para evitar ataques de suplantación de identidad. Asimismo, no se permite que el código que se ejecuta en el entorno limitado de la aplicación llame al método allowDomain() de Security. Contenido proporcionado a través de servidores RTMPFlash Media Server utiliza el protocolo RTMP (Real-Time Media Protocol) para proporcionar datos, audio y vídeo. Puede cargar estos medios mediante el método connect() de la clase NetConnection y pasa una URL RTMP como parámetro. Flash Media Server puede restringir las conexiones y evitar la descarga del contenido, en función del dominio del archivo que realiza la solicitud. Para obtener más información, consulte la documentación de Flash Media Server en línea en www.adobe.com/go/learn_fms_docs_es. Para utilizar los métodos BitmapData.draw() y SoundMixer.computeSpectrum() para extraer gráficos en tiempo de ejecución y datos de sonido de los flujos RTMP, debe permitir el acceso en el servidor. Utilice las propiedades Client.videoSampleAccess y Client.audioSampleAccess de ActionScript del servidor para permitir acceso a directorios específicos en Flash Media Server. Para obtener más información, consulte la referencia del lenguaje ActionScript de Flash Media Server. |
|