Creative Communities of the World Forums

The peer to peer support community for media production professionals.

Activity Forums Adobe After Effects Expressions scrolling numbers from 6000 to 30millions

  • scrolling numbers from 6000 to 30millions

    Posted by Anders Hattne on March 1, 2011 at 11:09 pm

    Hi,
    I’m trying to get a scroll from 6000 to 30 millions using a txt layer and a slider.
    I’ve modified an expression by Dan Ebberts to get me halfway into a mess. Don’t really know what I’m doing.. but still:
    num1=effect(“Slider Control”)(“Slider”);
    num2=linear(num1,0,100000, 6000, 30000000); /* slider only goes to 1milion*/
    s= ” ” + Math.floor(num2); /*don’t know what this does but needs to be done so you can read the amount of characters*/
    n = s.length;
    if (n > 3)
    {
    s.substr(0,n-3) + “,” + s.substr(-3); // separate with comas
    }
    if (n >5)
    {
    s.substr(0,n-6) + “,” +s.substr(-6,n-5) + “,” + s.substr(-3); //my messy modification
    }
    else
    s

    Right, the problem is the numbers above a thousand. I just played around and found that s.substr(-6,n-5)sort of worked but I end up with 4 numbers instead of 3. So the final number would be 16,6356,380. Also the first number stays 0 all the time, would be cool if that number could run as well..
    My apologies if this is really messy, but it’s late here with all what that means..
    I’d be very happy if someone could clean this up for me!

    Thanks!

    num1=effect("Slider Control")("Slider");
    num2=linear(num1,0,100000, 6000, 30000000);
    s= " " + Math.floor(num2);
    n = s.length;
    if (n > 3)
    {
    s.substr(0,n-3) + "," + s.substr(-3);
    }
    if (n >5)
    {
    s.substr(0,n-6) + "," +s.substr(-6,n-5) + "," + s.substr(-3);
    }
    else
    s

    http://www.ardillamedia.com

    Anders Hattne replied 15 years, 5 months ago 2 Members · 3 Replies
  • 3 Replies
  • Dan Ebberts

    March 2, 2011 at 12:19 am

    I think this works:


    num1=effect("Slider Control")("Slider");
    num2=linear(num1,0,100000, 6000, 30000000); /* slider only goes to 1milion*/
    s= "" + Math.floor(num2);
    n = s.length;
    if (n > 6){
    s.substr(0,n-6) + "," + s.substr(-6,3) + "," + s.substr(-3)
    }else if(n > 3){
    s.substr(0,n-3) + "," + s.substr(-3);
    }else{
    s
    }

    Dan

  • Anders Hattne

    March 2, 2011 at 7:58 am

    Yeah, works perfectly, thanks a lot!!

    I’ll have to figure out that substr operator. I once had a similar problem which I solved with a 18 line expression. Later I found your solution to the same problem in four lines..
    Thanks again!

    http://www.ardillamedia.com

  • Anders Hattne

    March 17, 2011 at 5:44 pm

    …and since I always.. ALWAYS get completely lost when trying to figure out the decimals, I’m adding the expression for 10 digits. That way it might be easier for beginners like me to figure out how it works..

    num1=thisComp.layer("number_controll").effect("Slider Control")("Slider");
    num2=linear(num1,0,100000, 0, 13700000000); /* convierte de 0 a 100mil a 6mil a 30millones*/
    s= "" + Math.floor(num2);
    n = s.length;
    if (n > 9){
    s.substr(0,n-9) + "." + s.substr(-9,3)+ "." + s.substr(-6,3) + "." + s.substr(-3)
    }
    else if (n > 6){
    s.substr(0,n-6) + "." + s.substr(-6,3) + "." + s.substr(-3)
    }
    else if(n > 3){
    s.substr(0,n-3) + "." + s.substr(-3);
    }
    else{
    s
    }

    http://www.ardillamedia.com

We use anonymous cookies to give you the best experience we can.
Our Privacy policy | GDPR Policy