¿Desde donde llamé a esa función global?

A veces nos interesa declarar una función global para poder acceder a ella desde cualquier línea de tiempo.

Por ejemplo, diseñé una función para cargar archivos XML.
Quería que la línea de tiempo desde donde se llamaba a la función parase hasta que terminara la carga y luego continuase.

Pero me encontré con el problema de que el ’stop();’ no funcionaba. Ni siquiera en _level0. La función global no sabía desde donde era llamada.

Voy a poner un ejemplo más sencillo para explicarlo mejor.

Primero declaro una función global:

_global.clipalfa = function(alpha) {
trace(this);
var timeline_mc = eval(this);
timeline_mc._alpha = alpha;
};

Con esta función pretendo modificar la transparencia del movieclip que contiene una llamada a dicha función.

Por ejemplo, tengo un clip al que llamo ‘menu_mc’, y en su línea de tiempo hago la siguiente llamada:

clipalfa(50);

Sin embargo no sucede nada, y la ventana de salida muestra un [type Object], fruto del ‘trace(this);’.
Esto es debido a que cuando declaras una función como global la estás convirtiendo en un objeto, que es independiente de cualquier línea de tiempo.

Solución: el método CALL.

Con este método puedes saber desde donde se ha llamado a la función global.

La llamada quedaría así:

clipalfa.call(this, 50);

donde ‘this’ almacena la línea de tiempo desde donde se está llamando a la función global.

2 Responses to “¿Desde donde llamé a esa función global?”

  1. Me acabas de ayudar muchisimo _global.mifuncion = Objeto!

    Muchas Gracias!!!!!!

  2. interesante info..
    saludos

Leave a Reply