Comunidad de diseño web y desarrollo en internet online

Ayuda - > Convertir una cadena en un nombre Instancia

Citar            
MensajeEscrito el 30 Jun 2007 02:59 pm
Hola a todos,

Bueno os comento el problema que tengo. Estoy intenado hacer una cosilla pero que solo voy a escribir una d elas partes que me crea el problema. Tengo varios nombres de instacias llamados, mc_animado1, mc_animado2, mc_animado3, mc_animado4.
Estoy intentado hacer una funcion que se hara para esos 4 elementos co esos nombres de instancia, y lo estoy haciendo de la siguiente forma. No estoy ni si quiera usando el "for" ni ningún contador para pegar el valor de botones al texto, solo estoy haciendo una mera prueba, antes de aplicar nada. Bueno, como veis al ahcer el trace me escribe exactamente lo que yo quiero conseguir, en este caso mc_animado2. Pero claro ahora mismo la variable b es una cadena de texto, y no como un nombre de instacia. Y este es el problema, no sé si me he explicado bien. En conclusión que quiero escribir ene ste caso mc_animado dos pero concatenandolo con una variable num_boton que se ira incrementando [num_boton++;] y concatenando. Pero no lo reconoce como un nombre de instancia.

Bueno si alguien puede ayudarme se lo agradezco...

Un Saludo! :D
.
.
.
num_boton = 2;
boton = "mc_animado" + num_boton;
trace(pepe); //mc_animado2

boton.onEnterFrame = function () {
if(boton._currentframe !=1) {
boton.prevFrame();
}
}
.
.
.

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Jun 2007 03:38 pm

Código :

num_boton = 2;
strBoton = "mc_animado" + num_boton;
boton = this[strBoton]


boton.onEnterFrame = function () {
if(boton._currentframe !=1) {
boton.prevFrame();
}
}


pd. usa la etiqueta code

Por Dano

BOFH

4273 de clabLevel

14 tutoriales
4 articulos
10 ejemplos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Lugar estratégico para vigilarte

firefox
Citar            
MensajeEscrito el 30 Jun 2007 03:39 pm
La forma de usar una cadena como nombre de instancia es muy simple:

Código :

_root["nombreMC"]._visible = true;
Lo mismo con rutas relativas:

Código :

this._parent._parent["nombreMC"]._visble = true;
Dentro de los corchetes puede ir cualquier expresión, que será convertida a una cadena. Aclaro que en caso de que el MC no exista no devuelve un error.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 30 Jun 2007 03:40 pm
Veo que llegué tarde...

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 30 Jun 2007 03:42 pm
Ok, en un ratito lo pruebo a ver que tal me va.

Muchas gracias !!!!!

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Jun 2007 08:10 pm
Bueno me ha funcionado , pero no del todo no sé porque no me funciona con ela estructura FOR. Y bueno ahora el problema es qe no se como hacer para que cuando despliego el boton, y luego lo pule se queda estatico, Por el momento bien, pero luego si salgo del elemento y vuelvo a rollover y salgo se oculta, y no debería ya que lo he pulsado y ha de quedar siempre estático al menos que pulse en otro boton :). Os dejo una direccion donde tengo hecho el fichero boton.fla , para que lo veáis mejor.

URL - > http://www.proyectobr.com/pruebas/boton.fla

Un Saludo!

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Jun 2007 09:27 pm
No puedo ver el .fla ahora, pero te puedo mostrar cómo se hace con un for:

Código :

for (var i = 0; i < 4; i++) {
this["mc" + i]._visible = true;
}
En este caso, tenemos 4 MCs llamados mc0, mc1, mc2 y mc3.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 30 Jun 2007 09:35 pm
No me funciona lo del for tampoco. Eso que has puesto no lo tengo muy claro, es mejor que veas el codigo de los botones que estan en el .fla para que veas como esta hecho :). El for lo tengo comentado.

Un Saludo y gracias

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Jun 2007 09:42 pm
Te digo que no puedo usar Flash ahora... no podés copiar el código?

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 30 Jun 2007 09:49 pm
Si, aquí lo tienes del boton 1. Esta hecho sin for, el for esta comentado. Son 3 botones mc_animado1, mc_animado2 y mc_animado3. Gracias!

Código :

on (rollOver) {
   mc_animado3.onEnterFrame = function () {
      if (this._currentframe !=20) {
         this.nextFrame();
      }
      else {
         this.stop();
         delete this["onEnterFrame"];
      }
   };
   accion=0;
}


on(rollOut) {
   if(accion!=1) {
   mc_animado3.onEnterFrame = function () {
      if (this._currentframe != 1) {
         this.prevFrame();
      }
      else {
         this.stop();
         delete this["onEnterFrame"];
      }
   };
  }
}


on(press) {
      mc_animado3.onEnterFrame = function () {
      if (this._currentframe !=20) {
         this.nextFrame();
      }
      else {
         this.stop();
         delete this["onEnterFrame"];
         accion=1;
         };
      }

                                //SIN FOR
      mc_animado1.onEnterFrame = function () {
            if(mc_animado1._currentframe !=1) {
            mc_animado1.prevFrame();
            } else {
            this.stop();
            delete this["onEnterFrame"];
            }
      }
      mc_animado2.onEnterFrame = function () {
            if(mc_animado2._currentframe !=1) {
            mc_animado2.prevFrame();
            } else {
            this.stop();
            delete this["onEnterFrame"];
            }
      }
                                //FIN SIN FOR


      /*--------------
      total = 3;
      for(var num_boton = 1; num_boton<total; num_boton++) {
         if(num_boton!=3) {
         strBoton = "mc_animado" + num_boton;
         boton = this[strBoton];
         trace(boton);
         boton.onEnterFrame = function () {
            if(boton._currentframe !=1) {
            boton.prevFrame();
            } else {
            this.stop();
            delete this["onEnterFrame"];
            }
         }
         }
      }-------------------*/
}


Un Saludo!

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Jun 2007 09:55 pm
El trace funciona?

Igual, tendrías que considerar usar prototipos.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 30 Jun 2007 10:00 pm
Si funciona, y en este caso duelve:-> (estamos en el boton mc_animado3)
_level0.mc_animado1
_level0.mc_animado2

Está bien, pero solo hace la accion con uno de los botones. Con los demas no lo hace, nose porque.

Y eso de prototipos no sé muy bien que es :)

Un Saludo! :wink:

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Jun 2007 10:32 pm
Un prototipo es esto:

Código :

MovieClip.prototype.accionBoton = function (mensaje) {
this.onRelease = function () {
trace (mensaje);
};
};
miBoton.accionBoton ("Funciona!";)
Si probás darle las acciones así... quizá funcione. No tengo idea de donde puede estar el error.Probá poniendo un trace en el onEnterFrame que creás en el for. Para ver si se asignaron las acciones correctamente.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 01 Jul 2007 10:15 am

HernanRivas escribió:

Un prototipo es esto:

Código :

MovieClip.prototype.accionBoton = function (mensaje) {
this.onRelease = function () {
trace (mensaje);
};
};
miBoton.accionBoton ("Funciona!";)
Si probás darle las acciones así... quizá funcione. No tengo idea de donde puede estar el error.Probá poniendo un trace en el onEnterFrame que creás en el for. Para ver si se asignaron las acciones correctamente.
\
Hola otra vez,
He probado eso de los prototipos pero no me funciona, no podeis comprobar a ver si conseguimos hacerlo?

El fichero lo teneis aki-> URL - > http://www.proyectobr.com/pruebas/boton.fla

Gracias.

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Jul 2007 02:09 pm
Cuando tenga la oportunidad lo veo.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 01 Jul 2007 08:00 pm
Alguien más no sabría como poder ayudarme??

Gracias,
;)

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Jul 2007 08:38 pm
Te convendría hacerlo así. Ahora sólo te queda crear los onRelease y los otros botones. Simplemente si el botón está seleccionado, la variable escala debería ser 100 y si no lo está, que varíe según el hitTest . El condicional lo podés hacer con un if o en una sola línea con esta estructura:

Código :

this.escala = (this.seleccionado)? 100 : 0;

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 01 Jul 2007 10:03 pm
Ok, muchas gracias. Lo mirare ahora a ver que tal. Por cierto que es eso del hitTest?
Podrías describirme mejor el código que has escrito debajo, no ´se muy bien a que te refieres y qué haría eso?

Un Saludo!

Por alvarobr85

8 de clabLevel



 

msie7
Citar            
MensajeEscrito el 04 Jul 2007 02:06 pm
Buscá en la ayuda de Flash.

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 10 Jul 2007 03:49 pm
prueba con esto:

Código :

      total = 3;
      for(var num_boton = 1; num_boton<total; num_boton++) {
         if(num_boton!=3) {
             strBoton = "mc_animado" + num_boton;
             boton = this[strBoton];
             trace(boton);
             boton.onEnterFrame = function () {
                  if(this._currentframe !=1) {         //-OJO usa "this" en lugar de "boton"
                       this.prevFrame();                 //-OJO usa "this" en lugar de "boton"
                  } else {
                       this.stop();
                       delete this["onEnterFrame"];
                 }
             }
         }
      }

Por gabynufe

Claber

446 de clabLevel



 

México, D.F.

msie7

 

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