Acceder a funciones en MovieClips de películas .swf externas

Posted by admin | AS3, Avanzado, Class | Tuesday 30 September 2008 8:00 pm

Cuando creamos aplicaciones complejas es probable que las construyamos a partir de cargar módulos creados en pequeñas películas .swf externas cargadas dentro de un Loader en la película principal. Estas pequeñas películas contendrán clips con clases asociadas que dispondrán de funciones públicas que nos interesará ejecutar desde la película principal. En este tip explicaré precisamente eso, cómo acceder a las funciones públicas de la clase asignada a un MovieClip de la librería de un archivo .swf externo desde la película principal.

Para mostrar el proceso utilizaré un ejemplo muy simplificado. Tendremos una película swfClipA.fla en cuya biblioteca tendrá un MovieClip al que le hemos asignado una clase, en este caso la clase se llama ClipA que estará dentro del package clases.

Para simplificar al máximo este ejemplo únicamente haremos que la clase de este clip le coloque un angulo de rotación aleatorio y coloque este valor dentro de una variable, y contendrá una función publica que devuelve dicho valor.

package clases
{
import flash.display.MovieClip;

public class ClipA extends MovieClip
{
private var angulo:uint;

public function ClipA()
{
this.rotation = Math.round(Math.random() *360);
angulo = this.rotation;
}
public function getAngulo():uint
{
return angulo;
}
}
}

Ahora bien, imaginemos que tenemos una película principal en la que cargamos este archivo swfClipA.swf. Esta sería la clase asignada a la película principal:

package clases
{
import flash.display.Loader;
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.events.Event;

public class Main extends MovieClip
{
private var _swf:MovieClip;

public function Main()
{
var loader:Loader = new Loader();
var request:URLRequest = new URLRequest("swfClipA.swf");
loader.load(request);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCargado);
}
private function onCargado(e:Event):void
{
_swf = addChild(e.target.content) as MovieClip;
}
}
}

Y ahora desde esta película principal acceder a la función pública del MovieClip interno del archivo externo. Lo único que tenemos que hacer es buscar la ruta de esa clase dentro del clip cargado.

Para ello realizaremos una búsqueda dentro del clip cargado y seleccionaremos cual de ellos está creado con la clase que nos interesa interactuar. Una vez encontrada podremos acceder sin problema a sus funciones públicas.

for (var i:uint = 0; i <_swf.numChildren; i++)
{
var clip:MovieClip = _swf.getChildAt(i) as MovieClip;
if (clip.constructor == ClipA)
{
var _clipA:MovieClip = clip;
}
trace(_clipA.getAngulo());
}

Comparte:
  • Meneame
  • Twitter
  • Facebook
  • Google Bookmarks
  • del.icio.us
  • Technorati
  • email
  • Print

Post relacinonados:

  1. Cómo duplicar MovieClips con gráficos en ActionScript 3
  2. Añadir funciones al teclado con Actionscript 3
  3. Manejo de MovieClips con ActionScript 3
  4. Clase de ActionScript 3 para añadir sombras a MovieClips
  5. Clase para cargar contenido externo en Actionscript 3

No Comments »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a comment

Get Adobe Flash playerPlugin by wpburn.com wordpress themes