Comunidad de diseño web y desarrollo en internet online

Llamar a varios MC de forma generica

Citar            
MensajeEscrito el 08 Nov 2005 06:12 pm
me pasa alfo parecido.

si tengo un funcion:
function mov(objeto)

al ejecutarla:
mov(tempo)

siendo tempo un Mc me la ejecuta.
Pero si tengo varios Mc y se llaman t1, t2, t3...

lo suyo seria hacer un bucle... y meter t1 t2 y t3 en una variable y cargar haciendo:

while (condicion)
variable="t" + i;
mov(variable);

y no va

Por zarius

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 08 Nov 2005 06:26 pm
var numTotal:Number = 3;
for(var i:Number = 0;i<numTotal;i++) {
mov(this["t"+i]);
};


ummm esto es algo más complicado de entender, es debido a que la variable "variable" contiene "texto" y no la referencia a un MovieClip. para que funcionase deberíais de poner

variable = this["t"+i];

NOTA, this hace referencia al MC actual, esto significa que el mc debería de estar en this.t1 this.t2 etc etc, el this se puede cambiar por cualquier ruta. al estilo de

_root["t"+i]
unMC.otroMC["t"+i]
etc etc

Por que de esta forma si funciona?
Bueno, this ( la ruta que useis ) es un objeto, más concretamente un MovieClip, los movieClips pueden tener variables de cualquier tipo, y t1 t2 t3 ... son variables que guardan la referencia a sendos objetos, por lo que le estamos pasando la referencia a un objeto, mientras que de la forma variable = "t"+i; solo le pasamos un String
para que funcionase deberiamos de probar con
mov(eval("t"+i)); algo bastante CRaPPY y que no se si funcionaría aunque imagino que si.
NOTA : Esto no pasaría si escribiérais con código estricto, declarando todas las variables de su tipo

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 09 Nov 2005 05:22 pm
Aja,

muchas gracias por tu respuesta.

Si ya me parecia a mi que era solo texto lo k se metia en la variable... El caso es que he revisado la funcion y la he puesto como tu dices: en mi caso dada una funcion mov:

mov(_root["t"+variable]); y no funciona.
sin embargo:
mov(t1); si me funciona.

y he verificado que t1 se crea en root.

alguna idea de porque puede ser?

Por zarius

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 09 Nov 2005 07:05 pm
como es tu funcion mov?

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

firefox
Citar            
MensajeEscrito el 10 Nov 2005 10:08 am
Es una funcion que agranda el objeto(pelicula) que le pase

function mov(objeto)
{
var x=objeto._x;
var y=objeto._y;
var w=objeto._width+1;
var h=objeto._height;
var tam=objeto.getTextFormat().size;

if (tam<40)
{
tam=tam+2;

var format = new TextFormat();
format.font = "Verdana";
format.size = tamano;
format.bold = true;
format.color =0x333399;

objeto.setTextFormat(format);

objeto._x=objeto._x-4;
objeto._y=objeto._y-2;
}
else
{
removeMovieClip(objeto);
}
}

Por zarius

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Nov 2005 10:23 am
Vale he encontrado el problema:

Tengo, una pelicula "tempo"+i que creo dinamicamente en _root.

Dentro de esa pelicula un texto llamado t1

Al llamar dinamicamente al texto yo intentaba hacerlo asi:

_root["tempo"+i + "t1"];

y claro no funciona ya que lo correcto es:

_root["tempo"+i].t1;

Muchas gracias por tu ayuda Iceman.

Por zarius

3 de clabLevel



 

msie
Citar            
MensajeEscrito el 10 Nov 2005 01:27 pm
Ya que ha surgido aquí, creo que tengo un problema parecido...
Desarrolle una funcion que hacia un efecto de texto. Le pasaba varios parametros y uno era la ruta (nombre) del campo de texto donde queria hacer el efecto, el problema es que si intento llamar a la fncion mas de una vez se hace el efecto y luego la segunda no hace nada, porque los contadores de dentro de la funcion y todo esto ya se ejecuto en la primera...
Entonces me fije mi funcion era como una clase de tweening prototypes, ya sabeis, alphas movimientos etc. Pense que lo mas seguro s que todo esto estuviera hecho por clases y en cada llamada se creara un objeto nuevo. El problema es que desconozco la mecanica de las clases y su uso, aunque creo que asi podria resolverlo... Alguien me explica un poco sobre si esta es la solucion?
thxs

Por frenadoll

922 de clabLevel

6 tutoriales

Genero:Masculino  

Barcelona

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.