Home » AS3 »Avanzado »Class » Currently Reading:

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

septiembre 30, 2008 AS3, Avanzado, Class 1 Comment
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.

  1. package clases
  2. {
  3. import flash.display.MovieClip;
  4.  
  5. public class ClipA extends MovieClip
  6. {
  7. private var angulo:uint;
  8.  
  9. public function ClipA()
  10. {
  11. this.rotation = Math.round(Math.random() *360);
  12. angulo = this.rotation;
  13. }
  14. public function getAngulo():uint
  15. {
  16. return angulo;
  17. }
  18. }
  19. }

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:

  1. package clases
  2. {
  3. import flash.display.Loader;
  4. import flash.display.MovieClip;
  5. import flash.net.URLRequest;
  6. import flash.events.Event;
  7.  
  8. public class Main extends MovieClip
  9. {
  10. private var _swf:MovieClip;
  11.  
  12. public function Main()
  13. {
  14. var loader:Loader = new Loader();
  15. var request:URLRequest = new URLRequest("swfClipA.swf");
  16. loader.load(request);
  17. loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCargado);
  18. }
  19. private function onCargado(e:Event):void
  20. {
  21. _swf = addChild(e.target.content) as MovieClip;
  22. }
  23. }
  24. }

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.

  1. for (var i:uint = 0; i < _swf.numChildren; i++)
  2. {
  3. var clip:MovieClip = _swf.getChildAt(i) as MovieClip;
  4. if (clip.constructor == ClipA)
  5. {
  6. var _clipA:MovieClip = clip;
  7. }
  8. trace(_clipA.getAngulo());
  9. }

Compártelo:

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

Currently there is "1 comment" on this Article:

  1. uriel dice:

    muy bueno.. este ejemplo.

Comment on this Article:








Twitter: zguillez

AdvertisementAdvertisementAdvertisementAdvertisement

Recibe las novedades por email



Map

Ranking

Codigoactionscript.org: 4.65 sobre 5 (106 valoraciones)

twitter-widget.com