Foros del Web » Programando para Internet » Javascript »

Evaluación de expresión... (¿existe "else if"?)

Estas en el tema de Evaluación de expresión... (¿existe "else if"?) en el foro de Javascript en Foros del Web. A ver maestros (me refiero a todos) Tengo esta expresión (en After Effects se les llama expresiones, pero es código Javascript) m=wiggle(20,100); if (m>100) {m=100}; ...

  #1 (permalink)  
Antiguo 17/07/2008, 00:49
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Evaluación de expresión... (¿existe "else if"?)

A ver maestros (me refiero a todos)

Tengo esta expresión (en After Effects se les llama expresiones, pero es código Javascript)

m=wiggle(20,100);
if (m>100) {m=100};
else if (m<0) {m=0};

wiggle, acabo de buscar la palabra y no aparece en este foro, explico que es una "función" que arroja valores aleatorios en valores de (frecuencia, amplitud).

Bueno, el resultado de este wiggle son valores de amplitud entre -120 a +120 (por otro valor que genera ruido)

Ok, Yo con esta expresión estoy intentando mantener los valores arriba de 0 (o en cero mínimo) y debajo de 100 (o 100 máximo) .

No se que tenga mal en este código que no me respeta la evaluación... Debo preguntar si en Javascript existe el "else if" y si también el resultado de la evaluación va entre {}, se que "if" es aceptado pero no se si el "else if" o de qué manera sería ???

Gracias por sus respuestas (que seguramente serán prontas y acertadas )
(ii)D
  #2 (permalink)  
Antiguo 17/07/2008, 01:25
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 20 años, 10 meses
Puntos: 381
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Hola Robi

No existe como tal else if, pero sí puedes anidar otros if else dentro de los if y de los else.

En el caso que expones te faltarían unas llaves

Código:
m=wiggle(20,100);
if (m>100) {m=100};
else{ if (m<0) {m=0};} 
Si necesitaras más condiciones te podría entonces convenir usar la sentencia switch

Un saludo
  #3 (permalink)  
Antiguo 17/07/2008, 03:20
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Es perfectamente válido sin llaves. El problema es que te sobre un punto y coma:
MAL:
Código:
m=wiggle(20,100);
if (m>100) {m=100};
else{ if (m<0) {m=0};}
BIEN:
Código:
m=wiggle(20,100);
if (m>100) m=100;
else if (m<0) m=0;
BIEN (mejor):
Código:
m=wiggle(20,100);
if (m>100) {
    m=100;
} else if (m<0) {
    m=0;
}
BIEN (incluso mejor):
Código:
m=random(100);
Para generar númeors aleatorios se usa random. wiggle es para modificar una propiedad aleatoriamente, pero que yo sepa no genera números.

Última edición por venkman; 17/07/2008 a las 03:32
  #4 (permalink)  
Antiguo 17/07/2008, 03:36
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 20 años, 10 meses
Puntos: 381
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Cita:
Iniciado por venkman Ver Mensaje
El problema es que te sobre un punto y coma:
Cierto, antes de las 10 de la mañana los puntos y comas sobrantes no se aprecian a simple vista


Cita:
Iniciado por venkman Ver Mensaje
Es perfectamente válido sin llaves.
también cierto. Ultimamente las pocas veces que respondo meto la gamba hasta el fondo así que creo que me mantendré en mi retiro de respuestas por este foro durante algunos años más ...
  #5 (permalink)  
Antiguo 17/07/2008, 10:40
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Joooo!!! Gracias por las respuestas... Pero me quedo en las mismas, en números negativos me pone cuernos y no se queda en cero :-/ Se va a su valor negativo...

Explico lo del wiggle, no uso random porque random me da valores aleatorios, por ejemplo, entre 0 y 100, [random(100)], y lo que hace Wiggle es crear valores, igual aleatorios pero refiriéndose a la frecuencia y amplitud de esa variación [wiggle(freq,amp)] Esto por ejemplo, aplicado a un objeto en su propiedad de posición, hace que se mueva aleatoriamente en x - y de manera más o menos contínua y con movimientos más o menos largos, por eso no me sirve el random, que solo me daría un valor aleatorio...

Lo curioso aquí es que acabo de probar con una sola condición:

Cita:
m=wiggle(20,100);
if (m<0) {m=0};
Y nada, se sigue yendo a valores negativos :s

"ya no se qué hacer ayudaaa" naaa... se me hace curioso, y pregunto si hay alguna forma especial de tratar los números negativos??

Gracias!!

PD.
Esto no es para web, es para After Effects =P
  #6 (permalink)  
Antiguo 17/07/2008, 10:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 2 meses
Puntos: 839
Pregunta Respuesta: Evaluación de expresión... (¿existe "else if"?)

Realmente, es muy raro, yo lo probé con Javascript (Web) y me funciona perfectamente. Nunca he usado eso del After Effects, pero aún así no le veo razón para que no funcione. ¿Cuál es el código completo?. Quizás sea algún problema en alguna otra parte del código.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 17/07/2008, 11:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 20 años, 2 meses
Puntos: 1284
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Cita:
Iniciado por tunait Ver Mensaje
...
también cierto. Ultimamente las pocas veces que respondo meto la gamba hasta el fondo así que creo que me mantendré en mi retiro de respuestas por este foro durante algunos años más ...
¡No tunait!, no nos prives de tus atinadas respuestas... (si tan solo tienes que tomarte antes un cafelito)


Cita:
Iniciado por RobiBaggio Ver Mensaje
"ya no se qué hacer ayudaaa" naaa... se me hace curioso, y pregunto si hay alguna forma especial de tratar los números negativos??

Gracias!!

PD.
Esto no es para web, es para After Effects =P
Hay un mensaje por ahí sobre esos titulos como ¡Ayudaaaa!... y similares



Has probado usar el valor absoluto (Math.abs())

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #8 (permalink)  
Antiguo 17/07/2008, 11:05
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

El código es corto:

Basado en el ejemplo correcto de venkman

Cita:
m=wiggle(20,100);
if (m>100) {
m=100;
} else if (m<0) {
m=0;
}
[value[0], value[1], m[2]];
No se si en Javascript se maneja igual, aquí, en la última línea estoy asignando a la posición Z (porque esta expresión esta en el parámetro de posición de un objeto) el valor aleatorio, es decir, el objeto se va a mover aleatoriamente (en la frecuencia y amplitud indicados) en la posición Z, nada más.

Pero si por ejemplo, tomo ese mismo valor de m para controlar a opacidad, la opacidad va de 0 a 100, entonces, como el wiggle me da valores de -120 a +120, lo que pretendo es que cuando exceda esos valores se ajuste a la cifra que Yo le indique... Esto es más para entender el funcionamiento de las condicionantes en Javascript dentro de After Effects, pero como de plano no me sale como lo entiendo, recurro a los expertos

@caricatos

y dónde meto el (Math.abs()) ?? (bueno, veré primero al referencia a propiedades para ver qué hace)
  #9 (permalink)  
Antiguo 17/07/2008, 11:10
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 2 meses
Puntos: 839
Exclamación Respuesta: Evaluación de expresión... (¿existe "else if"?)

La solución que te propone caricatos es buena. Si usas el abs te devolverá sin el signo, así que lo único que tendrás que comprobar es que si es mayor que 100...
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 17/07/2008, 11:15
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 2 meses
Puntos: 839
Exclamación Respuesta: Evaluación de expresión... (¿existe "else if"?)

Puedes poner:
Código PHP:
Math.abs(m); 
Después de tomar el valor de wiggle().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 17/07/2008, 11:18
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 20 años, 2 meses
Puntos: 1284
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Cita:
Iniciado por RobiBaggio Ver Mensaje
@caricatos

y dónde meto el (Math.abs()) ?? (bueno, veré primero al referencia a propiedades para ver qué hace)
Hola:

La verdad es que hubiera preferido hacer pruebas pero el "wiggle" ese no lo tiene FF , pero la línea sería:
m = Math.abs(wiggle(20, 100));

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #12 (permalink)  
Antiguo 17/07/2008, 11:21
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 20 años, 2 meses
Puntos: 1284
Respuesta: Evaluación de expresión... (¿existe "else if"?)

... hacía tiempo que no chocaba... David, debes mirar bien los semáforos

¡ejem!, y yo dejar de lado las birras...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #13 (permalink)  
Antiguo 17/07/2008, 11:55
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Pues nada, a pesar que es totalmente lógico el código de caricatos:

Cita:
m = Math.abs(wiggle(20, 100));
Me esta enviando un valor no numérico me tira error



Será que juegue un poco más con la forma en la que hay que hablarle al AE =P

Gracias de todas maneras Son de lo mejor aquí
  #14 (permalink)  
Antiguo 17/07/2008, 11:58
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 2 meses
Puntos: 839
Exclamación Respuesta: Evaluación de expresión... (¿existe "else if"?)

El mensaje de error al parecer no es por lo que te pusimos caricatos y yo. Al parecer se refiere a esto: m[2]. ¿Por qué el índice 2?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 17/07/2008, 12:04
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Sí, pero ese parametro marca error si no recibe no valor numérico, por eso digo que esa expresión no esta entregando un valor correcto, sin el Math.abs, simplemente no evalúa. :s
  #16 (permalink)  
Antiguo 17/07/2008, 12:07
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evaluación de expresión... (¿existe "else if"?)

¿Y así [value[0], value[1], m];?
  #17 (permalink)  
Antiguo 17/07/2008, 12:16
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Voy viendo que el Math.abs(), efectivamente no me devuelve un valor numérico.



El código completo es este, muy muy simple:

  #18 (permalink)  
Antiguo 17/07/2008, 12:18
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evaluación de expresión... (¿existe "else if"?)

En el error anterior, de lo que se quejaba era de que m era precisamente un número y como tal sólo es m, no tiene propiedad m[2]
  #19 (permalink)  
Antiguo 17/07/2008, 12:22
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 2 meses
Puntos: 839
Exclamación Respuesta: Evaluación de expresión... (¿existe "else if"?)

Pues yo había dicho lo mismo que venkman. Intenta colocar solo m.
Además, ya no necesitas comparar para ver si m es < 0 ya que nunca va a ser menor que 0 si usas abs.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #20 (permalink)  
Antiguo 17/07/2008, 12:26
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Pero si fuera un número estaría bien...

Como va la cosa con la última línea es que tenemos el conjunto de posicion [X, Y, Z], cada uno debe ir asignado a su posición[value[0], value[1], value[2]] ... "value" toma el mismo valor asignado en la posición indicada [0], [1], [2]... "value" debe ser un número, si en lugar de value asigno una variable numérica igual funciona, entoncves si m es igual a un número, esta bien... Según Yo :P

----
a ver, pruebo...

si en la ultima línea lo dejo como:

Cita:
[value[0], value[1], m];
me tira error, porque no le estoy especificando posición (falta el [2])

-----

Entonces al usar Math.abs, no me regresa números negativos?
  #21 (permalink)  
Antiguo 17/07/2008, 12:30
venkman
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Evaluación de expresión... (¿existe "else if"?)

¿Qué error exactamente te dice?
  #22 (permalink)  
Antiguo 17/07/2008, 12:34
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

A ver... creo que, unas pruebas más y queda, ya estoy entnediendo qué pasa aquí... el Wiggle me da valores aleatorios en tres posiciones (en este caso), y al estar pasando tres valores a evaluar al mismo tiempo está el problema... Dejen probar un poco más y les aviso.
  #23 (permalink)  
Antiguo 17/07/2008, 12:51
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 19 años, 2 meses
Puntos: 35
Respuesta: Evaluación de expresión... (¿existe "else if"?)

loading.............


Hola señores, mmm bueno no entiendo cual el problema. con los numeros? talvez wiggle no devuelve NUMEROS. intenta hacer

var m <--- rayos! siempre declaren las variables!!!!!!!!!!!!!!!!!!!!!!!!
Código PHP:
var =parseFloat(wiggle(0,200));
if (
m>100
{
  
m=100;
}
else if (
m<0)
{
m=0;

Ojo que evaluas m < 0 y no así si se diera el caso de que m sea igual a cero.

connection closed.
__________________

Maborak Technologies
  #24 (permalink)  
Antiguo 17/07/2008, 12:54
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 19 años, 2 meses
Puntos: 35
Respuesta: Evaluación de expresión... (¿existe "else if"?)

loading...........

Y bueno, no se porque usas m[2]; o m[1]; la accedes como si fuera matriz! y no, eso solo pasa con cadenas, a las cadenas las puedes acceder "cadena"[2]; ... pero NO con números.

connection closed.
__________________

Maborak Technologies
  #25 (permalink)  
Antiguo 17/07/2008, 13:02
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Con el After Effects es igual?? Porque en la referenica (pobre referencia) de expresiones no indica nada de declarar variables

Veamos, declaremos las variables...

Ojo con esto de los Arryas, es bastante engañoso, si de por sí con la posición del valor esta uno específicando el tipo de valor, además hay que obtener la posición del valor e indicarlo, por ejemplo:

En una propiedad de transformación de posición bidimensional.

[valorA[0], valorB[1]] es lo normal

[valorA[1], valorB[0]] da un espacio dimensional inverso, aunque la posición de los valores ya esté bien situado.

Sigo probando, gracias
(pst, no todos sabemos programar(somos programadores))

Por cierto MaBoRaK, wiggle entrega un valor aleatorio basado en frecuencia y amplitud, por lo tanto, números... Dejen subir un ejemplo de lo que hace wiggle para que quede más claro :arriba
  #26 (permalink)  
Antiguo 17/07/2008, 13:22
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Resultados hasta el momento:

Con las opciones de MaBoRaK me tira error. (al usar parseFloat) el valor que recibe la posición Z [X, Y, Z] no es correcto.



sin usar el parseFloat no da error, pero se pasa por el arco la evaluación...



Estoy armando el ejemplo del wiggle.
  #27 (permalink)  
Antiguo 17/07/2008, 13:46
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Aquí el link para que vean lo que hace wiggle:



el ejemplo es sobre posición, con valores bidimensionales, y sobre rotación con un valor unidimensional... Wiggle entrega valores aleatorios de frecuencia y amplitud sea para un único parámetro o para dos o para tres.
  #28 (permalink)  
Antiguo 17/07/2008, 13:54
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 2 meses
Puntos: 839
Exclamación Respuesta: Evaluación de expresión... (¿existe "else if"?)

También puedes usar parseInt, aunque no creo que haga mucha diferencia, ¿por qué en el último ejemplo no usas el Math.abs()?. Y es realmente muy raro que tome el valor negativo

¿Has probado en vez de anidar el if poner otro if? Así:
if (m>100) {m=100}
if (m<0) {m=0}
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #29 (permalink)  
Antiguo 17/07/2008, 14:05
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 17 años, 5 meses
Puntos: 150
Respuesta: Evaluación de expresión... (¿existe "else if"?)

Nada Deivid, en la respuesta 5 indico que hice la comprobación sola y me sigue enviando negativos... :s

Es decir, dejando de lado las propiedades de posición, no encuentro como evitar numeros negativos provenientes del wiggle

En la ayuda dice que:
Cita:
...Expresiones están basadas en el lenguaje estándar JavaScript...
...El lenguaje de expresión de After Effects está basado en JavaScript 1.2, con un conjunto extendido de objetos integrados.
After Effects utiliza solamente el lenguaje JavaScript 1.2 estándar principal, no las extensiones específicas del explorador
Web. After Effects contiene su propio conjunto de objetos de extensión, como Capa, Comp,Material de archivo y Cámara,
que pueden utilizarse para acceder a la mayoría de los valores de un proyecto de After Effects....
  #30 (permalink)  
Antiguo 17/07/2008, 14:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 17 años, 2 meses
Puntos: 839
Exclamación Respuesta: Evaluación de expresión... (¿existe "else if"?)

Pues bien, ¿ya intentaste convertir m a entero como te dije?:
Código PHP:
parseInt(m); 
¿Y después hacer la comprobación?. O en último caso declarar otra variable como entero, así tomas con m el valor de wiggle, lo pasas a la otra variable, y luego trabajas con esa otra variable.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
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 22:28.