Comunidad de diseño web y desarrollo en internet

Acceder el Stage desde cualquier clase en Actionscript 3

Al trabajar con clases Actionscript 3 en nuestros proyectos hay ocasiones en los que debemos acceder al stage principal de nuestra aplicación desde clases que no extienden a “DisplayObject”, haciendo que debamos pasar como parámetro dicho stage a las clases, esto funciona pero en realidad es un poco “sucio”.

Una solución simple es crear una clase singleton, en la cual, podemos almacenar no solo el stage principal, sino cualquier otro valor que necesitemos en varias clases. Algo así como _global de AS2, lo recuerdan?

Aquí la clase

Código :

package net.tmeister.utils
{
   public dynamic class Global
   {
      private static var global : Global

      public static function getInstance() : Global
      {
         if ( global == null )
         {
            global = new Global( arguments.callee );
         }
         return global;
      }

      public function Global( caller : Function = null ) 
      {   
         if ( caller != Global.getInstance )
         {
            throw new Error ("Global is a singleton class, use getInstance() instead");
         }
         if ( Global.global != null )
         {
            throw new Error( "Only one Global instance should be instantiated" );   
         }   
      }
   }
}



Y su modo de uso.

Código :

package 
{
   import flash.display.MovieClip;
   import net.tmeister.utils.Global
   public class Main extends MovieClip
   {
      private var global:Global;
      
      public function Main()
      {
         global = Global.getInstance();
         global.stage = stage
         trace('global.stage' + global.stage)
         global.algunOtroValor = new MovieClip()
         trace('global.algunOtroValor ' + global.algunOtroValor)
      }
   }
}


Simple. :cool:

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate