Cargando un archivo .swf dentro de otro con ActionScript 3

10 de octubre de 2010

En ocasiones al trabajar con Adobe Flash es necesario cargar o insertar un archivo .swf dentro de otro.

Supongamos que queremos cargar el archivo "archivo_a_cargar.swf" en el archivo "principal.swf"

Con ActionScript 2 esta tarea se realizaba con una línea de código usando las funciones loadMovieNum() o loadMovie().

En ActionScript 2, usando la función loadMovieNum(), en el archivo "principal.swf" bastaría con escribir:

loadMovieNum("archivo_a_cargar.swf", 1);

Con esta línea de código se carga el archivo "archivo_a_cargar.swf" en el nivel / "layer" 1 del archivo "principal.swf".

Otra alternativa: en ActionScript 2, usando la función loadMovie(), en el archivo "principal.swf" bastaría con escribir:

loadMovie("archivo_a_cargar.swf", mc_destino);

Con esta línea de código se carga el archivo "archivo_a_cargar.swf" dentro del archivo "principal.swf" en el movieclip llamado "mc_destino". (Dentro del archivo "principal.swf" previamente se debió crear un movieclip en el stage/escenario y ponerle como nombre "mc_destino")

Pero con ActionScript 3 las cosas cambiaron radicalmente.

En Action Script 3 para cargar el archivo "archivo_a_cargar.swf" dentro del archivo "principal.swf" en el movieclip llamado "mc_destino" se puede utilizar este código:

var swf_Loader:Loader = new Loader();
// se crea un nuevo objeto del tipo Loader

var swf_archivo:String = "archivo_a_cargar.swf"
// se define el archivo a cargar
// se puede usar la notacion "./" "../" si el archivo está en otro directorio

var swf_descargar:URLRequest = new URLRequest(swf_archivo);
// se crea un nuevo objeto del tipo URLRequest

swf_Loader.load(swf_descargar);
// solicita el archivo con el método load del objeto Loader

mc_destino.addChild(swf_Loader);
// el archivo "archivo_a_cargar.swf" se carga dentro del archivo "principal.swf"
// en el movieclip llamado "mc_destino"

En ActionScript 3 con estas líneas de código se carga el archivo "archivo_a_cargar.swf" dentro del movieclip llamado "mc_destino". (Dentro del archivo "principal.swf" previamente se debió crear un movieclip en el stage/escenario y ponerle como nombre "mc_destino")

Ejemplo:

A continuación se explica línea por línea el código anterior. En color crema se señala lo que NO DEBE MODIFICARSE pues son las funciones predefinidas de Action Script 3..

var swf_Loader:Loader = new Loader();

Crea la variable swf_Loader que almacena un objeto del tipo Loader. El objeto Loader permite cargar archivos swf , jpg, gif o png dentro de una animación flash.

var swf_archivo:String = "archivo_a_cargar.swf";

Se crea la variable swf_archivo del tipo STRING(cadena de caracteres) para almacenar el nombre del archivo a cargar

var swf_descargar:URLRequest=new URLRequest(swf_archivo);

Crea la variable swf_descargar que almacena un objeto del tipo URLRequest. El objeto URLRequest pemite hacer la solicitud HTTP al servidor para transferir los archivos a descargar.

swf_Loader.load(swf_descargar);

Se hace uso del método load del objeto Loader para cargar en sí el archivo.

mc_destino.addChild(swf_Loader);

Con el método addChild se despliega en el escenario/stage el archivo previamente cargado. En este caso se despliega dentro del movieclip mc_destino (que previamente debió crearse).

Es preferible cargar el archivo "archivo_a_cargar.swf" dentro del movieclip llamado "mc_destino" para tener mayor control sobre su posición.

Pero también es posible cargar el archivo "archivo_a_cargar.swf" en el stage/escenario del archivo "principal.swf".

Para ello se puede utilizar este código:

var swf_Loader:Loader = new Loader();
// se crea un nuevo objeto del tipo Loader

var swf_archivo:String = "archivo_a_cargar.swf"
// se define el archivo a cargar
// se puede usar la notacion "./" "../" si el archivo está en otro directorio

var swf_descargar:URLRequest = new URLRequest(swf_archivo);
// se crea un nuevo objeto del tipo URLRequest

swf_Loader.load(swf_descargar);
// solicita el archivo con el método load del objeto Loader

stage.addChild(swf_Loader);
// el archivo "archivo_a_cargar.swf" se carga en el stage/escenario
// del archivo "principal.swf".

Es una buena práctica dividir una animación de flash en pequeños fragmentos que se carguen a petición del usuario. No tiene mucho sentido descargar una animación completa de 50 megas cuando el visitante no va a ver todo el contenido del sitio.

Están disponibles los archivos .fla de este ejercicio para un análisis más detallado.

Sitios de interés

Usando clases (class) y objetos en ActionScript 3.

Usando símbolos del tipo bitmap con ActionScript 3

Usando símbolos con ActionScript 3


Comenta y opina este texto     Lee mi libro de visitas
© 1997-2014 Alain García Gómez
albegago@hotmail.com
El vínculo a este documento es:
http://www.alaingarcia.net/weird/cargar_swf.php

Suscribase a nuestro RSS

Puedes apoyar a este sitio regalándome una c3rvez4