Acceder a funciones en MovieClips de pelÃculas .swf externas
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.
{
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:
{
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.
{
var clip:MovieClip = _swf.getChildAt(i) as MovieClip;
if (clip.constructor == ClipA)
{
var _clipA:MovieClip = clip;
}
trace(_clipA.getAngulo());
}
Post relacinonados:
No Comments »
No comments yet.
RSS feed for comments on this post. TrackBack URI








