Foros del Web » Programando para Internet » Javascript »

Insertar un caracter entre un valor numérico dinámico (no se cómo describirlo bien)

Estas en el tema de Insertar un caracter entre un valor numérico dinámico (no se cómo describirlo bien) en el foro de Javascript en Foros del Web. Hola nuevamente por acá. De entrada aviso que esto es para una Expresión de After Effects. Verán, tengo un campo numérico que cambia su valor ...
  #1 (permalink)  
Antiguo 01/08/2008, 18:16
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Insertar un caracter entre un valor numérico dinámico (no se cómo describirlo bien)

Hola nuevamente por acá.

De entrada aviso que esto es para una Expresión de After Effects.

Verán, tengo un campo numérico que cambia su valor de 0 a 4000 en base a otro valor de movimiento. Ok, Ahora necesito agregar una "," para separar los miles, para que quede como "4,000"

El código es este.

Cita:
a=thisComp.layer("Null 1").effect("Numbers")("Value/Offset/Random Max"); //de aquí toma el valor numérico
b=ease(a,0,4000); //de aquí crea la interpolación de 0 a 4000
"+ "+b.toFixed(0); //aquí agrego un caracter "+" antes del número y quito las decimales
El resultado es un + 4000

Pero necesito que quede como + 4,000

Entonces, cómo puedo insertar un caracter alfabético dentro de un campo numérico generado dinámicamente?? Supongo que así esta bien redactada la pregunta... =P

Gracias!!

(disculpar que no definí las variables antes :P)
  #2 (permalink)  
Antiguo 01/08/2008, 19:31
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

¿y puedes definir funciones? ... no veo que asignes a nada el valor final, ¿lo toma así como así?

Como sea, desde mi desconocimiento, podrías intentar con algo como:
Código:
a=thisComp.layer("Null 1").effect("Numbers")("Value/Offset/Random Max"); //de aquí toma el valor numérico
b=ease(a,0,4000); //de aquí crea la interpolación de 0 a 4000
c = b.toFixed(0); // Antes, para tratarlo
// Entonces...
if(c.length > 3) {
    // Si esta en el rango de los millares, separas y pegas
    part1 = c.substr(0, 1);
    part2 = c.substr(-3);
    num = part1+','+part2;
} else {
    // Si no, pos pasa ....
    num = c;
}
// y deberías tener num para concatenarlo como antes lo hacias
"+ "+num; //aquí agregas un caracter "+"  ... aunque igual pudiste hacerlo antes
Pues prueba :-/. Suerte
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 01/08/2008, 21:41
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

Cita:
Iniciado por jam1138 Ver Mensaje
¿y puedes definir funciones? ... no veo que asignes a nada el valor final, ¿lo toma así como así?
Como mencioné, es para After Effects, si esta "expresión" es colocada en determinada propiedad, el valor de esa propiedad es el resultado de la expresión, y sabes... FUNCIONA!!!! che jam, te debo las birras y unos tacones lejanos del tercer planeta...

Ahora, solo con el propósito didáctico de aprender y no ser una ladilla que pide un código y desaparece ... Vamos por partes diría Jack (no el Daniels que conozco).

"length" es un indicativo de cuántos caracteres tiene esa variable supongo

"substr(0,1)" mi cerebro no entiende

"substr(-3)" supongo se refiere a la posición de acuerdo al número de caracteres, pero no era de izquierda a derecha?? tampoco entender.

Lo demás es claro como el agua

Si puedes explicarme, genial, si no, pues, igual te debo las birras
  #4 (permalink)  
Antiguo 01/08/2008, 21:50
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

Acá tenés una completa referencia acerca de substr: http://devmo.dekiwiki.mozilla.org/es.../String/substr
  #5 (permalink)  
Antiguo 01/08/2008, 22:02
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

Yiralo!!! Con eso la hago Gracias.

(me queda lejor BsAs, pero cuando vaya te invito las birras a ti también Panino5001 )
  #6 (permalink)  
Antiguo 01/08/2008, 22:16
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

Será bienvenida la invitación
  #7 (permalink)  
Antiguo 01/08/2008, 23:01
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

chido que te funcionó. En realidad la pusiste simple --por tener un rango bien definido-- . Por si hiciera falta:
substr(0,1) > Contando desde el principio, toma un caracter
substr(-3) > Toma los tres últimos ... que igual pudo ser con 1, pero así lo hice ¿y qué?

Lo que no entendí es que, hasta el final concatenas, pero no asignas a nada ese valor, solo "lo dejas ahí" . ¿Esta incompleto o en serio ahí termina?, es solo lo que me causa curiosidá.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 01/08/2008, 23:15
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

Se supone que:

En el AE tienes propiedades como por ejemplo, "posisión" (en x, y y z), "escala" igual en tres dimensiones, "rotación", "opacidad" y todos los efectos que quieras, cada efecto tiene una línea o espacio específico donde tiene su valor, en el caso del texto, tiene un valor llamado "source text", cada propiedad tiene un valor que se refleja en el área de trabajo, entonces en esos espacios puedo insertar las expresiones, y el resultado es el valor de la propiedad, en este caso, del "source text", enotnces el texto es igual al valor resultante de la expresión.. Si le asigno este código a un campo numérico me pinta caracolitos

Ahora, probé cambiando el valor a 40,000 y ja ja, no funca ajustándolo, o me pone un caracter de más... Pero ya estoy toqueteando el código, aunque primero debo revisar bien la info que dejó Panino

Debería ser:
substr(0,2)
substr(-4)

Pero niguas. ya estoy en eso, solo que ya no urge Voy con calmita

-----------------
Ya'stuvo

Cita:
a=effect("Slider Control")("Slider") //cambié el sitio de donde se obtenía la info, pero lo demás es el mismo funcionamiento
b=ease(a,0,30000);
c = b.toFixed(0);
if(c.length == 3) {
part1 = c.substr(0, 1);
part2 = c.substr(-3);
num = "+ "+part1+","+part2;
} else if(c.length == 4) {
part1 = c.substr(0, 2);
part2 = c.substr(-3);
num = "+ "+part1+","+part2;
} else {
num = "+ "+c;
}
All you rock's

Última edición por RobiBaggio; 02/08/2008 a las 08:52
  #9 (permalink)  
Antiguo 02/08/2008, 11:21
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

No no no no... 7 na más porque funciona , pero Robi, ¿por qué no algo como...
Código:
a=effect("Slider Control")("Slider") //cambié el sitio de donde se obtenía la info, pero lo demás es el mismo funcionamiento
b=ease(a,0,30000);
c = b.toFixed(0);
l = c.length;
if(l > 3) {
    part1 = c.substr(0, l-3);
    part2 = c.substr(-3);
    num = "+ "+part1+","+part2;
}  else {
    num = "+ "+c;
}
...? y pordrías mejorarlo para hacerlo mucho más genérico, pero va, espero te sirva. Saludos
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 02/08/2008, 11:44
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

conchos (¬¬)

No que si funciona ya esta resuelto?? De programador a programador se dice "funciona" y ya te evitas líos

Nah! Gracias igual, ese código lo saqué con mi lógica elemental, aún no desarrollo la compleja Ya veo cómo va la cosa, esa parte de mí la tengo dormidita para no perder creatividad con las partículas =P
  #11 (permalink)  
Antiguo 02/08/2008, 12:36
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

Cita:
Iniciado por RobiBaggio Ver Mensaje
[...] lo saqué con mi lógica elemental, aún no desarrollo la compleja [...] esa parte de mí la tengo dormidita para no perder creatividad con las partículas =P
¿y eso se dice un multimediero a otro multimediero?

El "funciona" es solo el pretexto .

Igual estaba empleando la lógica elemental; desde un inicio pregunté si podrías definir funciones y mencioné que se puede hacer algo genérico .. pues bien, quizá le sirva a alguien más. Se me ocurre esto:
Código:
// Definición de la función
function superRobi(num)
{
    l = num.length;
    if(l > 3) {
        p1 = num.substr(0, l-3);
        if(p1.length > 3) {
            // Recursividad para hacerla genérica
            p1 = superRobi(p1, 1);
        }
        p2 = num.substr(-3);
        num = p1+","+p2;
    } // Adios else's
    //  Y para darle al Robi todo peladito y a la boca
    return  (arguments[1]) ? num : '+ '+num;
}
// Termina función. Se procede con el código del Robi

a=effect("Slider Control")("Slider") //cambié el sitio de donde se obtenía la info, pero lo demás es el mismo funcionamiento
b=ease(a,0,30000);
c = superRobi(b.toFixed(0));
// Y tienes 'c' pa tus propósitos macabros...
¿Así o más claro?. Con esto deberías poder utilizar cualquier número y te lo debería formatear según entiendo como lo pides. Ejemplo:
'308473089' a '+ 30,8473,089'
'7348' a '+ 7,348'
etc, etc, etc...

... claro, todo si la definición de la función es correcta, que si apenas tengo una idea de lo que es AE

Cualquier error, favor de comentarlo. Saludos
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #12 (permalink)  
Antiguo 02/08/2008, 12:52
Avatar de RobiBaggio
Colaborador
 
Fecha de Ingreso: enero-2005
Ubicación: Mind
Mensajes: 13.554
Antigüedad: 19 años, 3 meses
Puntos: 150
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

Efectivamente funciona tal cual lo describes:



Solo que, si bien es menos complicado para futuras aplicaciones, el uso de expresiones es poco extenso dentro de AE, por ejemplo, si necesito mover 4 grupos numéricos, en mi caso real, 3 grupos de 4 dígitos y solo 1 de 5, generar una expresión, luego copiarla y pegarla en las otras capas y modificar un par de datos para que funcione, es mucho más rápido, pensando en que ese efecto se verá a lo sumo 10 segundos del video... es lo que tiene AE, que no es para web, es para video, y el resultado del código se verá solo durante algún tiempo y no será interactivo, solo para el que lo programa... Pero de que es útil, es totalmente útil

Gracias por la explicación

(ii)D (ii)D (ii)D
  #13 (permalink)  
Antiguo 02/08/2008, 13:15
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: Insertar un caracter entre un valor numérico dinámico (no se cómo describi

.. pues solo entendí "es útil" , y ahí la dejamos. Nos vemos
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 19:59.