Foros del Web » Creando para Internet » Flash y Actionscript »

me falla esto y no se por que

Estas en el tema de me falla esto y no se por que en el foro de Flash y Actionscript en Foros del Web. Hola, lo cierto es que hace poco que tiempo que llevo con actionscript y por eso a cada dos por tres me surgen muchisimas dudas, ...
  #1 (permalink)  
Antiguo 25/06/2005, 20:56
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
me falla esto y no se por que

Hola, lo cierto es que hace poco que tiempo que llevo con actionscript y por eso a cada dos por tres me surgen muchisimas dudas, entre ellas una relacionada con una llave que creo que es prescindible pero si la prescindo no funciona la funcion.
Realmente el codigo que voy a poner es de un tutorial de estos que hay por internet, mas concretamente de la pagina de WWW.FAQ-MAC.com
os pongo el codigo

//
function carga_texto(m) {
if (m == 1) {
total_valores = paises.length;
valor_actual = Math.round(Math.random()*total_valores)-1;
if (valor_actual == -1) {
valor_actual = 0;
}
eval("star" add m add ".t").text = paises[valor_actual];
} else {
eval("star" add m add ".t").text = capitales[valor_actual];
}
}
//

la llave que esta en negrita y con un tamaño superior es la que no entiendo que hace ahi, si la quito me da error y si la pongo no, es que no se que llave abierta es la que cierra.
Y otra cosa el comando eval¿que es lo que hace exactamente?... bueno tengo alguna que otra duda mas, pero si de momento me podeis ayudar con esto, me vale.
Gracias
  #2 (permalink)  
Antiguo 25/06/2005, 22:03
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
La llave que dices, al parecer cierra el primer if

eval tengo entendido que "evalua" según la ayuda de Flash:

Acción; crea una nueva línea vacía e inserta un punto y coma (;) para escribir sentencias que deben evaluarse en el panel Acciones.

Suerte con ese código.
  #3 (permalink)  
Antiguo 26/06/2005, 02:18
Avatar de DvD AdN  
Fecha de Ingreso: mayo-2005
Ubicación: Frente al monitor
Mensajes: 610
Antigüedad: 18 años, 11 meses
Puntos: 0
simplemente cuenta las "{" y las "}" y si hay la misma cantidad de "{" como de "}" pues deberia estar ahi , yo conte 4 de cada una
__________________
Keep f***ing learning
Ask for f***ing help.
Use f***ing spell check.
Think about all the f***ing possibilities.
  #4 (permalink)  
Antiguo 26/06/2005, 07:25
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 20 años, 4 meses
Puntos: 0
Voy a intentar responder, eso sí a mi manera , ya que no soy muy técnico en el tema.

Lo de "else", debe ir entre }{ . Es la sintaxis de ActionScript. Deberias tener en cuenta que la estructura siempre será así:

"if" simple:
Código:
if(condicion){
     lo_que_precede_a_la_condicion
};
"if" con "else":
Código:
if(condicion){
     lo_que_precede_a_la_condicion
} else {
     lo_que_quieras
};
Referente a la función "eval", te voy a comentar (más o menos) que es lo que hace en la función que has comentado.

Código:
eval("star" add m add ".t").text = capitales[valor_actual];
En tu pelicula debes tener unos objetos creados llamados "star1", "star2", "star3", etc... Seguramente serian MC o botones, y en su interior otro objeto (seguramente un cuadro de texto dinámico), llamado "t".

Si quieres cambiar el valor de este cuadro de texto, por ejemplo de "star1", lo podriamos hacer así:

Código:
star1.t.text = "Hola me llamo pepito";
Pero si, imaginemos, lo quieres hacer a los 10 objetos llamados "star0", "star1", etc... Podrias hacerlo así:

Código:
i=0

// mientras "i" sea más pequeña que 10...
while (i < 10){
     //fíjate como voy haciendo referencia a los objetos mediante "eval" y la variable "i"
     eval("star" add i add ".t").text = "Hola me llamo pepito";
     //incremento el valor de la variable "i"
     i++;
};
Bueno, espero haberte ayudado.
Saludos!!!
  #5 (permalink)  
Antiguo 26/06/2005, 11:04
Avatar de neoarcangel  
Fecha de Ingreso: enero-2005
Ubicación: España
Mensajes: 566
Antigüedad: 19 años, 2 meses
Puntos: 5
Bueno, antes que nada, agradeceros a todos vuestras respuestas, me han ayudado a comprenderlo algo mas.
No tenia ni idea que el "else" tenia el cierre y la apertura de las llaves entre medio.
No obstante aunque lo entiendo algo mas, hay algunas cosas que se me escapan
Para que os hagais una idea mejor del ejercico que es, es este tutorial de internet.
La parte donde explica donde esta cada objeto es la pagina 2, realmente es un movieclip que engloba a dos objetos(una bola y un cuadro de texto) llamado como nombre de instancia "star", y dentro de este movieclip, la bola es un grafico y el cuadro de texto tiene un nombre de instancia "t".
Lo que no me queda muy claro es la "m" no se que hace ni en el eval ni al principio de la funcion, y la funcion eval si no he entendido mal hace lo mismo, que esa funcion que has puesto pero se utiliza en los bucles ¿no?.
De momento eso.
Gracias por vuestra ayuda
  #6 (permalink)  
Antiguo 27/06/2005, 00:49
 
Fecha de Ingreso: diciembre-2003
Mensajes: 141
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola!

La "m" es simplemente una variable que utilizamos para pasar un valor dentro de la función. Me explico.

Código:
function saluda(m){
     trace("Hola " + m + ". ¿Como estas?);
};
"m" seria la variable que utilizo para pasar el nombre a la funcion "saluda". De esta manera puedo ir cambiando el valor de "m" para tantas personas quiera, con el mismo saludo.
La manera de llamar a la función seria la siguiente:

Código:
saluda("Alex");
De esta manera obtendriamos:

Código:
Hola Alex. ¿Como estas?
Cita:
eval si no he entendido mal hace lo mismo, que esa funcion que has puesto pero se utiliza en los bucles ¿no?
No necesariamente. Es muy útil para lo que comentamos en el post anterior, llamar a objetos componiendo su nombre a partir de una variable, sea mediante un bucle (haciendo referencia a muchos) o una acción simple en la linea de tiempo (haciendo referencia a un solo objeto)

Saludos!!!

Última edición por NeoZ; 27/06/2005 a las 00:57
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:30.