Al trabajar con clases AS3 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

[as] 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” );
}
}
}
}
[/as]

Y su modo de uso.

[as] 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)
}
}
}
[/as]

Simple.

Follow me through my day

Send requests or questions about my products, find out on what I'm working and stay tune with my updates or just say hello ;)

Array

@Tmeister

active